模擬
vector.size返回的是矩陣的行數,vector[0].size返回的是矩陣的列數
先排除傳入的矩陣是空矩陣
先計算上下左右的邊界
只要邊界不重合,就不停止輸出,完成一個部分的打印,就將當前的一個邊界回收
不可以在for循環結束的時候一起判斷,因為這樣可能會出現無效遍歷或越界的情況
class Solution {public:vector<int> printMatrix(vector<vector<int> > matrix) {vector<int> res;int n = matrix.size();//先排除特殊情況if (n == 0)return res;//左邊界int left = 0;//右邊界int right = matrix[0].size() - 1;//上邊界int up = 0;//下邊界int down = n - 1;//直到邊界重合while (left <= right && up <= down) {//上邊界的從左到右for (int i = left; i <= right; i++)res.push_back(matrix[up][i]);//上邊界向下up++;if (up > down)break;//右邊界的從上到下for (int i = up; i <= down; i++)res.push_back(matrix[i][right]);//右邊界向左right--;if (left > right)break;//下邊界的從右到左for (int i = right; i >= left; i--)res.push_back(matrix[down][i]);//下邊界向上down--;if (up > down)break;//左邊界的從下到上for (int i = down; i >= up; i--)res.push_back(matrix[i][left]);//左邊界向右left++;if (left > right)break;}return res;}
};