数组面试题 01.07. 旋转矩阵
Posted ocpc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组面试题 01.07. 旋转矩阵相关的知识,希望对你有一定的参考价值。
题目:
解答:
方法一:会超时间
1 class Solution { 2 public: 3 void rotate(vector<vector<int>>& matrix) 4 { 5 // 思路是: 转置 + 反转每一行 6 7 int len = matrix.size(); 8 9 // transpose matrix 10 for (int i = 0; i < len; i++) 11 { 12 for (int j = i; j < len; j++) 13 { 14 std::swap(matrix[i][j], matrix[j][i]); 15 } 16 } 17 18 // reverse each row 19 for (int i = 0; i < len; i++) 20 { 21 int beg = 0; 22 int end = len - 1; 23 while (beg < end) 24 { 25 std::swap(matrix[i][beg], matrix[i][end]); 26 } 27 } 28 29 } 30 };
方法二:
1 class Solution { 2 public: 3 void rotate(vector<vector<int>>& matrix) 4 { 5 int temp=-1; 6 7 for (int start = 0, end = matrix[0].size() - 1; start < end; start++, end--) 8 { 9 for(int s = start, e = end; s < end; s++,e--) 10 { 11 temp=matrix[start][s]; 12 matrix[start][s]=matrix[e][start]; 13 matrix[e][start]=matrix[end][e]; 14 matrix[end][e]=matrix[s][end]; 15 matrix[s][end]=temp; 16 }; 17 }; 18 } 19 };
以上是关于数组面试题 01.07. 旋转矩阵的主要内容,如果未能解决你的问题,请参考以下文章
算法初级面试题03——队列实现栈栈实现队列转圈打印矩阵旋转矩阵反转链表之字打印矩阵排序矩阵中找数