标签:顺时针 matrix bottom int Offer 29 right ans left
剑指 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。