力扣 54. 螺旋矩阵(螺旋遍历)
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
push_back的运用: (加在最后一个元素的后面位置)
#include<iostream> #include<vector> using namespace std; int main() { vector <int> ret; for (int i = 0; i < 10; i++) ret.push_back(i + 1); for (int i = 0; i < 10; i++) cout <<"ret["<<i<<"]="<< ret[i] <<endl; }
算法代码(螺旋遍历): 不能再while里写判断条件否则会在m*n(m!=n)中出错
class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector <int> ret; //螺旋遍历的方法 int up=0;//上边界 int down=matrix.size()-1;//下边界 int left=0;//左边界 int right= matrix[0].size()-1;//右边界 while(1){ //不能再while里写判断条件否则可能出错在m*n(m!=n)中 for(int i=left;i<=right;i++)//右移 ret.push_back(matrix[up][i]); if(++up>down)break; for(int i=up;i<=down;i++)//下移 ret.push_back(matrix[i][right]); if(--right<left)break; for(int i=right;i>=left;i--)//左移 ret.push_back(matrix[down][i]); if(up>--down)break; for(int i=down;i>=up;i--)//上移 ret.push_back(matrix[i][left]); if(right<++left)break; } return ret; } };