0%

rotate-image & group-anagrams

题目描述

给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。

说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

题解

1
2
3
4
5
6
7
8
9
10
void rotate(vector<vector<int>>& matrix) {
//转置和水平翻转两个步骤
int vsize = matrix.size();
for (int i = 0; i < vsize; i++)
for (int j = 0; j < i; j++)
swap(matrix[i][j], matrix[j][i]);
for (int i = 0; i < vsize; i++)
for (int j = 0; j < vsize / 2; j++)
swap(matrix[i][j],matrix[i][vsize - 1 - j]);
}

执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户

内存消耗 :9.3 MB, 在所有 C++ 提交中击败了5.11%的用户

好的吧。

题目描述

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

题解

我只能说,质数相乘这种想法是真的牛逼。

按常规想法,每个字符串内部排序然后再做比较,有一些慢啊。排序再比较那这个题有啥意思呢??

算了,我写排序吧。毕竟质数这种想法,我是想不出来的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> res;
map<string, int> m;
string tmp;
int count = 0;
map<string, int>::iterator it;
for (int i = 0; i < strs.size(); i++)
{
tmp = strs[i];
sort(tmp.begin(), tmp.end());
it = m.find(tmp);
if (it != m.end())
res[it->second].push_back(strs[i]);
else
{
m[tmp] = count;
res.push_back({ strs[i] });
count++;
}
}
return res;
}

啊啊啊啊,LeetCode这个傻逼的同步操作,真是气死我了啊啊啊,新整个表就叫同步了吗啊???

OK,Fine.

执行用时 :44 ms, 在所有 C++ 提交中击败了89.71%的用户

内存消耗 :17 MB, 在所有 C++ 提交中击败了97.03%的用户

这个数据可以抚慰我心了。