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