LeetCode 59. 螺旋矩陣 II(python、c++)
題目描述
給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
示例:
輸入: 3
輸出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
題解
(迴圈) O(n2)
我們順時針定義四個方向:上右下左。
從左上角開始遍歷,先往右走,走到不能走為止,然後更改到下個方向,再走到不能走為止,依次類推,遍歷 n^2 個格子後停止。
時間複雜度分析:矩陣中每個格子遍歷一次,所以總時間複雜度是 O(n2)。
c++版
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans;
ans = vector<vector<int>> (n, vector<int> (n));
int x = 0, y = 0;
int step = 1;
while(step <= n*n){
while(y < n && !ans[x][y])ans[x][y++] = step++;
y-=1;
x+=1;
while(x < n && !ans[x][y]) ans[x++][y] = step++;
x-=1;
y-=1;
while(y >= 0 &&!ans[x][y]) ans[x][y--] = step++;
y += 1;
x-=1;
while(x >= 0 && !ans[x][y]) ans[x--][y] = step++;
x+=1;
y+=1;
}
return ans;
}
};
python版
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
ans = [[0 for _ in range(n)] for _ in range(n)]
x = 0
y = 0
step = 1
while step <= n*n:
while y < n and ans[x][y] == 0:
ans[x][y] = step;
y += 1
step += 1
y-=1;
x+=1;
while x < n and ans[x][y] == 0:
ans[x][y] = step;
x += 1
step += 1
x-=1;
y-=1;
while y >= 0 and ans[x][y] == 0:
ans[x][y] = step;
y -= 1
step += 1
y += 1;
x-=1;
while x >= 0 and ans[x][y] == 0:
ans[x][y] = step;
x -= 1
step += 1
x+=1;
y+=1;
return ans
相關文章
- [Leetcode]59.螺旋矩陣ⅡLeetCode矩陣
- 【leetcode】每日精選題詳解之59. 螺旋矩陣 IILeetCode矩陣
- leetcode:螺旋矩陣LeetCode矩陣
- 977.有序陣列的平方 ,209.長度最小的子陣列 ,59.螺旋矩陣II陣列矩陣
- Day2| 977.有序陣列的平方 ,209.長度最小的子陣列 ,59.螺旋矩陣II陣列矩陣
- Day2 |977.有序陣列的平方& 209.長度最小的子陣列&59.螺旋矩陣II陣列矩陣
- 程式碼隨想錄Day2 | LeetCode 209. 長度最小的子陣列、LeetCode 59. 螺旋矩陣 II、KamaCoder 44. 開發商購買土地LeetCode陣列矩陣Mac
- 螺旋矩陣矩陣
- Q14 LeetCode59 螺旋矩陣LeetCode矩陣
- 程式碼隨想錄刷題day 2 | 977.有序陣列的平方、 209.長度最小的子陣列、 59.螺旋矩陣II陣列矩陣
- 54. 螺旋矩陣矩陣
- 程式碼隨想錄演算法訓練營第二天 | 209. 長度最小的子陣列、 59.螺旋矩陣II演算法陣列矩陣
- LeetCodeHot100 73. 矩陣置零 54. 螺旋矩陣 48. 旋轉影像 240. 搜尋二維矩陣 IILeetCode矩陣
- 程式碼隨想錄演算法訓練營第二天 | 陣列 59.螺旋矩陣演算法陣列矩陣
- 力扣-54. 螺旋矩陣力扣矩陣
- 程式碼隨想錄演算法訓練營第二天| 977.有序陣列的平方、 209.長度最小的子陣列、 59.螺旋矩陣II演算法陣列矩陣
- 程式碼隨想錄演算法訓練營第二天| 977.有序陣列的平方 209.長度最小的子陣列 59.螺旋矩陣II演算法陣列矩陣
- 6.5陣列--模擬、偏移量-螺旋矩陣陣列矩陣
- 59. Spiral Matrix II
- 程式碼隨想錄演算法訓練營Day2|209.長度最小的子陣列 59.螺旋矩陣演算法陣列矩陣
- C語言實現矩陣螺旋輸出C語言矩陣
- 【程式碼隨想錄】一、陣列:5.螺旋矩陣陣列矩陣
- 程式碼隨想錄演算法訓練營,29日 | 704. 二分查詢,27. 移除元素,977.有序陣列的平方,209.長度最小的子陣列,59.螺旋矩陣II演算法陣列矩陣
- Leetcode 566.重塑矩陣LeetCode矩陣
- 富有敗筆的B1050 螺旋矩陣 (25分)矩陣
- 矩陣置零—leetcode73矩陣LeetCode
- 240. 搜尋二維矩陣 II 和74. 搜尋二維矩陣矩陣
- Python練習-LeetCode 第1篇 順時針列印矩陣PythonLeetCode矩陣
- LeetCode 74——搜尋二維矩陣LeetCode矩陣
- 資料結構與演算法---螺旋矩陣、整數反轉資料結構演算法矩陣
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode-350-兩個陣列的交集 IILeetCode陣列
- 【LeetCode】766. 託普利茨矩陣LeetCode矩陣
- leetcode:面試題 01.08. 零矩陣(陣列,中等)LeetCode面試題矩陣陣列
- LeetCode題解(0407):接雨水II(Python)LeetCodePython
- LeetCode—253.會議室 II(Meeting Rooms II)——分析及程式碼(C++)LeetCodeOOMC++
- python輸入詳解(陣列、矩陣)Python陣列矩陣
- leetcode240——搜尋二維矩陣(medium)LeetCode矩陣