力扣54:螺旋矩陣
- 題目
- 思路
- 代碼
題目
給你一個 m 行 n 列的矩陣 matrix ,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。
思路
思路很簡單創建一個二維數組然后按照箭頭所示的順序一層一層的給二維數組相應的位置賦值即可。難點是我們是一層一層的賦值也就是先把最外層一圈的數賦值,再來內層一圈的,所以我們需要定義左邊界右邊界上邊界和下邊界四個值,每完成一行或一列的賦值就需要將對應的邊界進行++或–。
代碼
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> v;int m = matrix.size(); // 行int n = matrix[0].size(); // 列int left = 0; // 最左列int right = n - 1; // 最右列int top = 0; // 頂行int bottom = m - 1; // 底行while (left <= right && top <= bottom) {// 從左到右for (int i = left; i <= right; i++) {// 列數在變v.push_back(matrix[top][i]);}top++;// 從上到下for (int i = top; i <= bottom; i++) {// 行數在變v.push_back(matrix[i][right]);}right--;// 從右往左if (top <= bottom) {for (int i = right; i >= left; i--) {// 列數在變v.push_back(matrix[bottom][i]);}}bottom--;// 從下往上if (left <= right) {for (int i = bottom; i >= top; i--) {// 行數在變v.push_back(matrix[i][left]);}}left++;}return v;}
};