【剑指offer】顺时针打印矩阵
题目链接:顺时针打印矩阵
题意:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.
题解:画个图。模拟。
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
发现规律,从左向右走,再从上向下走,再从右向左走,再从下向上走。然后重复这个过程。
代码:
1 class Solution { 2 public: 3 vector<int> printMatrix(vector<vector<int> > matrix) { 4 vector<int> ans; 5 if(matrix.empty()) return ans; 6 int l=0,r=matrix[0].size()-1,up=0,down=matrix.size()-1; 7 while(1){ 8 for(int i = l; i <=r; i++) ans.push_back(matrix[up][i]); 9 if(++up > down) break; 10 11 for(int i = up; i <= down; i++) ans.push_back(matrix[i][r]); 12 if(--r < l) break; 13 14 for(int i = r; i >= l; i--) ans.push_back(matrix[down][i]); 15 if(--down < up) break; 16 17 for(int i = down; i >= up ;i--) ans.push_back(matrix[i][l]); 18 if(++l > r) break; 19 } 20 return ans; 21 } 22 };