LeetCode筆記 54螺旋矩陣

2021-08-28 22:39:44 字數 1915 閱讀 9004

題目:

給定乙個包含 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,10,9,5,6,7]

思路:大神們還是很牛的,直接看了大神的**。這個題主要是搞清楚座標的轉換。首先先確定螺旋的圈數,然後按照上面,右面,下面,左面的順序依次處理資料。要特別注意範圍。

這道題劍指29題,思路比較麻煩,把**寫在下面**二。這個題太容易寫錯了。。。。。

**:

public class solution

// 只有一行的情況 要特別注意,對矩陣求length結果返回的是行數

if (matrix.length== 1)

return result;

}// 只有一列的情況  返回列數

if (matrix[0].length== 1)

return result;

}// 計算有多少圈

int row = matrix.length;

int col = matrix[0].length;

int cycle = row < col ? row : col;  //取行列中最小的乙個

cycle = (cycle + 1) / 2;

int round = 0; // 記錄當前是第幾圈

int left = 0;  //第一列

int right = matrix[0].length - 1;  //最後一列

int top = 0;  //第一行

int down = matrix.length - 1;  //最後一行

int total = col*row;

int count = 0;

while (round < cycle)

top++; //處理下一行

// 右邊一列

for (int i = top; i <= down && count < total; i++)

right--;

// 底下一行

for (int i = right; i >= left && count < total; i--)

down--;

// 左邊一列

for (int i = down; i >= top && count < total; i--)

left++;

round++;

}return result;}}

**二:

public arraylistprintmatrix(int matrix)

return list;

}private void printonecircle(int matrix,int start,)

// 從右往左(判斷是否會重複列印)

if (start < endx && start < endy)

// 從下往上(判斷是否會重複列印)

if (start < endx && start < endy - 1)

}

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

leetcode54 螺旋矩陣

給定乙個包含 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...

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 思路是 方向陣列 邊界調整 如下 class solution void matain int x,int...