微网站建设公司首选,做的好的办公家具网站,房地产设计师,建设部网站不支持360螺旋矩阵 题解1 循环#xff08;4个标志——根据顺时针#xff09;题解2 方向 给你一个
m 行
n 列的矩阵
matrix #xff0c;请按照
顺时针螺旋顺序 #xff0c;返回矩阵中的所有元素。 提示#xff1a; - m matrix.length - n matrix[i].length - 1 m, n … 螺旋矩阵 题解1 循环4个标志——根据顺时针题解2 方向 给你一个
m 行
n 列的矩阵
matrix 请按照
顺时针螺旋顺序 返回矩阵中的所有元素。 提示 - m matrix.length - n matrix[i].length - 1 m, n 10- -100 matrix[i][j] 100题解1 循环4个标志——根据顺时针
class Solution {
public:vectorint spiralOrder(vectorvectorint matrix) {const int row matrix.size();const int column matrix[0].size();vectorint res;int i(0), j (0), startR(0), endR(column-1), startC(0), endC(row-1);while(startC endC){i startC;j startR;if(j endR){while(j endR)// i startCres.push_back(matrix[i][j]);startC ;i ;}else break;if(i endC){j endR;while(i endC)// j endRres.push_back(matrix[i][j]);endR --;j --;}else break;if(j startR){i endC;while(j startR)// i endCres.push_back(matrix[i][j--]);endC --;i --;}else break;if(i startC){j startR;while(i startC)// j startRres.push_back(matrix[i--][j]);startR ;}else break;}return res;}
};题解2 方向
class Solution {
private:
// 向右、向下、向左、向上static constexpr int directions[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
public:vectorint spiralOrder(vectorvectorint matrix) {if (matrix.size() 0 || matrix[0].size() 0) {return {};}int rows matrix.size(), columns matrix[0].size();vectorvectorbool visited(rows, vectorbool(columns));int total rows * columns;vectorint order(total);int row 0, column 0;int directionIndex 0;// 终止条件是 元素数目for (int i 0; i total; i) {order[i] matrix[row][column];visited[row][column] true;int nextRow row directions[directionIndex][0], nextColumn column directions[directionIndex][1];if (nextRow 0 || nextRow rows || nextColumn 0 || nextColumn columns || visited[nextRow][nextColumn]) {directionIndex (directionIndex 1) % 4;}row directions[directionIndex][0];column directions[directionIndex][1];}return order;}
};