1. 程式人生 > >Leetcode 54.螺旋矩陣

Leetcode 54.螺旋矩陣

螺旋矩陣

給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。

示例 1:

輸入:
			
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
輸出: [1,2,3,6,9,8,7,4,5]

 

 

 1 class Solution {
 2     public:
 3     vector<int> spiralOrder(vector<vector<int>>& matrix) {
4 // 儲存結果 5 vector<int> result; 6 // 邊界條件 7 if (matrix.empty()) 8 return result; 9 // 二維矩陣行列 10 int rows = matrix.size(); 11 int cols = matrix[0].size(); 12 // 圈的四個角標 13 int left = 0; 14 int right = cols - 1;
15 int top = 0; 16 int btm = rows - 1; 17 // 迴圈列印圈 18 while (left <= right && top <= btm){ // 迴圈條件: 19 // 圈的第一步 20 for (int i = left; i <= right; ++i) // 第一步迴圈條件 21 result.push_back(matrix[top][i]); //
第一步座標 22 // 圈的第二步 23 if (top<btm) // 第二步邊界條件 24 for (int i = top + 1; i <= btm; ++i) // 第二步迴圈條件 25 result.push_back(matrix[i][right]); // 第二步座標 26 // 圈的第三步 27 if (top<btm && left<right) // 第三步邊界條件 28 for (int i = right - 1; i >= left; --i) // 第三步迴圈條件 29 result.push_back(matrix[btm][i]); // 第三步座標 30 // 圈的第四步 31 if (top + 1<btm && left<right) // 第四步邊界條件 32 for (int i = btm - 1; i >= top + 1; --i) // 第四步迴圈條件 33 result.push_back(matrix[i][left]); // 第四步座標 34 35 ++left; --right; ++top; --btm; 36 } 37 return result; 38 } 39 };