题目描述
给定一个 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%的用户
这个数据可以抚慰我心了。