48. Rotate Image
2016-05-08 16:55
183 查看
题目:
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?
题意:
给定一个n x n 的二维矩阵,将矩阵旋转90度。
思路:转载自“leetcode题解”
首先想到,纯模拟,从外到内一圈一圈的转,但这个方法太慢。
如下图,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
或者,首先沿着水平中线翻转一次,然后沿着主对角线翻转一次。
代码:
首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
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?
题意:
给定一个n x n 的二维矩阵,将矩阵旋转90度。
思路:转载自“leetcode题解”
首先想到,纯模拟,从外到内一圈一圈的转,但这个方法太慢。
如下图,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
或者,首先沿着水平中线翻转一次,然后沿着主对角线翻转一次。
代码:
首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
class Solution { public: void rotate(vector<vector<int>>& matrix) { const int n = matrix.size(); for(int i=0; i<n; ++i){ for(int j=0; j<n-i; ++j){ swap(matrix[i][j], matrix[n-1-j][n-1-i]); } } for(int i=0; i<n/2; ++i){ for(int j=0; j<n; ++j){ swap(matrix[i][j], matrix[n-1-i][j]); } } } };首先沿着水平中线翻转一次,然后沿着主对角线翻转一次。
class Solution { public: void rotate(vector<vector<int>>& matrix) { const int n = matrix.size(); for(int i=0; i<n/2; ++i){ for(int j=0; j<n; ++j){ swap(matrix[i][j], matrix[n-1-i][j]); } } for(int i=0; i<n; ++i){ for(int j=i+1; j<n; ++j){ swap(matrix[i][j], matrix[j][i]); } } } };
相关文章推荐
- MySQL简单查询
- 设计模式开篇
- Git 基础 —— 配置与日志信息
- 让Brackets支持jade文件代码高亮
- 《精益创业》读后思考 1
- C++模板实例化
- HAL库-STM32F4 UART-IT
- 【WCF】创建第一个WCF应用程序
- java中静态方法中调用非静态方法
- 专业贴膜技术知识
- Android设备使用扩展屏幕Presentation中的异常崩溃处理总结
- 设有n项任务,加工时间分别表示为正整数t1,t2,...,tn。背包问题系列
- KMP算法相关
- 解析301与302重定向之间的区别
- ubuntu完整安装glib心得
- MySQL语句
- AJAX简单demo
- Application与普通类的区别
- LRU队列的实现
- 泊松分布与美国枪击案