力扣演算法題 054螺旋矩陣

2022-06-04 05:45:06 字數 1008 閱讀 9402

1 #include "

000庫函式.h"2

34//我們定義p,q為當前環的高度和寬度,當p或者q為1時,5//

表示最後乙個環只有一行或者一列,可以跳出迴圈。6//

此題的難點在於下標的轉換,如何正確的轉換下標是解此題的關鍵,7//

我們可以對照著上面的3x3的例子來完成下標的填寫,**如下:

8class

solution

27return

res;28}

29};

3031

//對於這種螺旋遍歷的方法,重要的是要確定上下左右四條邊的位置,

32//

那麼初始化的時候,上邊up就是0,下邊down就是m - 1,左邊left是0,右邊right是n - 1。

33//

然後我們進行while迴圈,先遍歷上邊,將所有元素加入結果res,然後上邊下移一位,

34//

如果此時上邊大於下邊,說明此時已經遍歷完成了,直接break。同理對於下邊,左邊,右邊,

35//

依次進行相對應的操作,這樣就會使得座標很有規律,並且不易出錯,參見**如下:

3637

class

solution

54return

res;

55}

56};

5758

5960

void

t054() ,, };

65 v =s.spiralorder(m);

66for

(auto a : v)

67 cout << a << "";

68 cout <69 m = };

70 v =s.spiralorder(m);

71for

(auto a : v)

72 cout << a << "";

73 cout <7475 }

力扣 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 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...

力扣54 螺旋矩陣

原題 給你乙個m行n列的矩陣matrix,請按照 順時針螺旋順序 返回矩陣中的所有元素。個人理解 把自己比作正在行走的 棋子,按照右,下 左,上的順序進行移動。每一次碰到編輯觸發換方向,每一次還方向,走路的行為發生變化,走路的行為就是x,y的座標。設定好邊界和觸發邊界換向的條件和邊界的變化就可以解決...

力扣 059 螺旋矩陣 II

給定乙個正整數 n,生成乙個包含 1 到 n 2n 2 n2所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 這是經典的陣列題,題目看起來簡單,但做起來的時候,很容易因為邊界的問題搞到自己十分混亂。這裡我推薦一下我的做法,首先是按圈來排列數字...