首页 > 编程知识 正文

n阶螺旋矩阵,编程螺旋矩阵

时间:2023-05-05 00:55:25 阅读:190816 作者:4843

题目

 

代码  class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if (matrix.empty() || matrix[0].empty()) return {}; int height = matrix.size(), width = matrix[0].size(); vector<int> res; int up = 0, down = height - 1, left = 0, right = width - 1; while (true) { //从左往右 for(int j=left;j<=right;j++) res.push_back(matrix[up][j]); //上面大于下面 if(++up>down) break; //从右上往右下 for(int i=up;i<=down;i++) res.push_back(matrix[i][right]); //右边小于左边 if(--right<left) break; //从右下往左下 for(int j=right;j>=left;j--) res.push_back(matrix[down][j]); //下边小于上面 if(--down<up) break; //从左下往左上 for(int i=down;i>=up;i--) res.push_back(matrix[i][left]); //左边超过了右边 if(++left>right) break; } return res; }};  思路

每次遍历一行或者一列之后,需要调整边界大小(up,down,right,left四个边),并且判断是否已经遍历完成(当up>down,left>right说明要超出边界了,已经遍历完成所有)。 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。