矩阵遍历、图片遍历算法
常用到一个移动矩阵
leetcode54题
class Solution {
private:
int dxy[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int m = matrix.size();
if(m == 0) return {};
int n = matrix[0].size();
vector<vector<bool>> visited(m,vector<bool>(n));
vector<int> res;
int cur = 0;
int row = 0;
int col = 0,direction = 0;
int sum = m*n;
while(cur<sum){
res.push_back(matrix[row][col]);
visited[row][col] = true;
cur++;
int newrow = row+dxy[direction][0];
int newcol = col+dxy[direction][1];
if(newrow > m-1 || newcol > n-1 ||newrow < 0 || newcol <0 ||visited[newrow][newcol])
direction = (direction + 1)%4;
row += dxy[direction][0];
col += dxy[direction][1];
}
return res;
}
};