剑指 Offer 29. 顺时针打印矩阵
作者:互联网
剑指 Offer 29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
1 class Solution { 2 public: 3 vector<int> spiralOrder(vector<vector<int>>& matrix) { 4 if (matrix.size() == 0) { 5 return {}; 6 } 7 vector<int> ans; 8 int left = 0; 9 int right = matrix[0].size() - 1; 10 int top = 0; 11 int bottom = matrix.size() - 1; 12 while (1) { 13 // 1、从左向右 14 for (int i = left; i <= right; i++) { 15 ans.emplace_back(matrix[top][i]); 16 } 17 if (++top > bottom) { 18 break; 19 } 20 // 2、从上到下 21 for (int i = top; i <= bottom; i++) { 22 ans.emplace_back(matrix[i][right]); 23 } 24 if (left > (--right)) { 25 break; 26 } 27 // 3、从右向左 28 for (int i = right; i >= left; i--) { 29 ans.emplace_back(matrix[bottom][i]); 30 } 31 if (top > (--bottom)) { 32 break; 33 } 34 // 4、从下到上 35 for (int i = bottom; i >= top; i--) { 36 ans.emplace_back(matrix[i][left]); 37 } 38 if (++left > right) { 39 break; 40 } 41 } 42 return ans; 43 } 44 };
标签:顺时针,matrix,bottom,int,Offer,29,right,ans,left 来源: https://www.cnblogs.com/MGFangel/p/16319724.html