LeetCode 48. Rotate Image
来源:互联网 发布:阿里云cdn价格 编辑:程序博客网 时间:2024/04/29 07:51
1. 题目描述
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
2. 解题思路
拿到这个问题, 感觉和 LeetCode 54/59. Spiral Matrix i, ii非常的类似, 我们可以每次旋转一个外围环上的4个点, 直到所有的点都旋转完毕即可
3. code
class Solution {public: void rotate(vector<vector<int>>& matrix) { int N = matrix.size(); for (int i = 0; i != N / 2; i++){ rotate_round(matrix, i, N); } }private: void rotate_round(vector<vector<int>>& matrix, int offset, int N){ int len = N - 2 * offset; for (int i = 0; i != len - 1; i++){ int tmp = matrix[offset][offset + i]; matrix[offset][offset + i] = matrix[N - offset - i - 1][offset]; matrix[N - offset - i - 1][offset] = matrix[N - offset - 1][N - offset - i - 1]; matrix[N - offset - 1][N - offset - i - 1] = matrix[offset + i][N - offset - 1]; matrix[offset + i][N - offset - 1] = tmp; } }};
4. 大神解法
4.1 demo1 一个巧妙的数学矩阵变换方法
/* * clockwise rotate * first reverse up to down, then swap the symmetry * 1 2 3 7 8 9 7 4 1 * 4 5 6 => 4 5 6 => 8 5 2 * 7 8 9 1 2 3 9 6 3*/void rotate(vector<vector<int> > &matrix) { reverse(matrix.begin(), matrix.end()); for (int i = 0; i < matrix.size(); ++i) { for (int j = i + 1; j < matrix[i].size(); ++j) swap(matrix[i][j], matrix[j][i]); }}/* * anticlockwise rotate * first reverse left to right, then swap the symmetry * 1 2 3 3 2 1 3 6 9 * 4 5 6 => 6 5 4 => 2 5 8 * 7 8 9 9 8 7 1 4 7*/void anti_rotate(vector<vector<int> > &matrix) { for (auto vi : matrix) reverse(vi.begin(), vi.end()); for (int i = 0; i < matrix.size(); ++i) { for (int j = i + 1; j < matrix[i].size(); ++j) swap(matrix[i][j], matrix[j][i]); }}
0 0
- [LeetCode]48.Rotate Image
- LeetCode 48. Rotate Image
- LeetCode 48.Rotate Image
- LeetCode --- 48. Rotate Image
- [Leetcode] 48. Rotate Image
- [leetcode] 48. Rotate Image
- Leetcode 48. Rotate Image
- 48. Rotate Image LeetCode
- [LeetCode]48. Rotate Image
- leetcode 48. Rotate Image
- Leetcode 48. Rotate Image
- LeetCode 48. Rotate Image
- LeetCode *** 48. Rotate Image
- [LeetCode]48. Rotate Image
- LeetCode 48. Rotate Image
- LeetCode-48.Rotate Image
- [LeetCode] 48. Rotate Image
- LeetCode 48. Rotate Image
- HTML CSS 鼠标鼠标选中的更改颜色
- 动态规划-塔数
- 《统计学习方法》-朴素贝叶斯法笔记和python源码
- iOS 开发中常用的第三方库
- Entity Framework走马观花之把握全局
- LeetCode 48. Rotate Image
- C#写datatable到excel无模板
- 进程、线程与处理器的关系和调度
- cpu对寄存器的访问速度最快
- strtolower.php
- 气泡杂谈
- 信号槽传送结构体笔记
- 从龙虱得到的启示
- 奋斗吧,程序员——第二十七章 鸿雁在云鱼在水,惆怅此情难寄