LeetCode-48-Rotate Image(模拟)-Medium
来源:互联网 发布:js引用数据类型有哪些 编辑:程序博客网 时间:2024/05/16 18:29
题意理解:
将给定二维矩阵顺时针选择90度;
题目分析:
1. 一层一层的旋转(解题代码中就是这个方法);
2. 技巧解法:将原始矩阵上下对折,然后再对角对折,等效于顺时针选择90度(没有想懂其中的数学原理);
解题代码:
class Solution {private: int read(vector<vector<int>> &m, int layer, int index){ int size=m.size(); int cap=size-2*layer; if(index<cap){ return m[layer][layer+index]; }else if(index<2*cap){ return m[layer+index-cap][size-1-layer];// }else if(index<3*cap){ return m[size-1-layer][size-1-layer-(index-2*cap)]; }else{ return m[size-1-(index-3*cap)-layer][layer];// }} void set(vector<vector<int>> &m, int layer, int index, int value){ int size=m.size(); int cap=size-2*layer; if(index<cap){ m[layer][layer+index]=value; return; }else if(index<2*cap){ m[layer+index-cap][size-1-layer]=value;// return; }else if(index<3*cap){ m[size-1-layer][size-1-layer-(index-2*cap)]=value; return; }else{ m[size-1-(index-3*cap)-layer][layer]=value; return; }}public: void rotate(vector<vector<int>>& matrix) { int size=matrix.size(); for(int i=0; i<size/2; i++){ int cap=size-2*i; for(int j=0; j<cap-1; j++){ int top= read(matrix, i, j); cout<<"top= "<<top<<endl; int left=read(matrix, i, cap*3+j); cout<<"left= "<<left<<endl; set(matrix, i, j, left);//top int bottom=read(matrix, i, cap*2+j); cout<<"bottom= "<<bottom<<endl; set(matrix, i, cap*3+j, bottom);//left int right=read(matrix, i, cap+j); cout<<"right= "<<right<<endl; set(matrix, i, cap*2+j, right);//bottom set(matrix, i, cap+j, top);//right } } }};
0 0
- LeetCode-48-Rotate Image(模拟)-Medium
- [Leetcode 48, medium] Rotate Image
- LeetCode 48. Rotate Image (Medium)
- Medium 48题 Rotate Image
- Leetcode 48. Rotate Image (Medium) (cpp)
- Leetcode 48. Rotate Image (Medium) (java)
- Leetcode: 48.Rotate Image(Week4, Medium)
- [leetcode 48] Rotate Image
- [LeetCode 48]Rotate Image
- leetcode || 48、Rotate Image
- leetcode-48 Rotate Image
- Rotate Image - LeetCode 48
- Leetcode 48: Rotate Image
- Leetcode #48 Rotate Image
- LeetCode(48) Rotate Image
- leetcode 48: Rotate Image
- Leetcode#48||Rotate Image
- leetcode 48:Rotate Image
- LaTeX简历模板网站
- ORACLE--子查询
- 烤氏历史第1集:窄带CDMA沉浮录——高通入华博弈、选择IS95往事
- 腾讯云建站+lnp
- 烤氏历史第2集:联通前传
- LeetCode-48-Rotate Image(模拟)-Medium
- 2016年学术中国寒假书单 众多博士倾情推荐
- 烤氏历史第3集:争议网通-资金雄厚的挑战者,负债累累的争议者
- 简易在线投票系统(php)——前端设计(js部分)
- AngularJS进阶(二十六)实现分页操作
- 烤氏历史第4集:TD往事-商用分水岭
- abstract class和interface
- Nginx编译安装时常见错误分析
- 美景、美食、美人——记我的家乡“大别山”!!!