leetcode 885 螺旋矩陣 III

2021-10-22 08:42:34 字數 2147 閱讀 9890

目錄

一、題目內容

二、解題思路

三、**

在 r 行 c 列的矩陣上,我們從 (r0, c0) 面朝東面開始這裡,網格的西北角位於第一行第一列,網格的東南角位於最後一行最後一列。現在,我們以順時針按螺旋狀行走,訪問此網格中的每個位置。每當我們移動到網格的邊界之外時,我們會繼續在網格之外行走(但稍後可能會返回到網格邊界)。

最終,我們到過網格的所有 r * c 個空間。

按照訪問順序返回表示網格位置的座標列表。

示例 1:輸入:r = 1, c = 4, r0 = 0, c0 = 0輸出:[[0,0],[0,1],[0,2],[0,3]]

示例 2:輸入:r = 5, c = 6, r0 = 1, c0 = 4輸出:[[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3],[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1,1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]

和leetcode_59. 螺旋矩陣 ii和leetcode_54. 螺旋矩陣思想類似,四個方向逐次儲存座標即可,注意逐漸擴大的範圍。

class solution:

def spiralmatrixiii(self, r: int, c: int, r0: int, c0: int) -> list:

res = [[r0, c0]]

offset = 0

x = r0

y = c0

while 1:

if len(res) == r * c:

break

offset += 1

for i in range(1, offset + 1):

if 0 <= x < r and 0 <= y + i < c and len(res) < r * c:

y += offset

for i in range(1, offset + 1):

if 0 <= x + i < r and 0 <= y < c and len(res) < r * c:

x += offset

offset += 1

for i in range(1, offset + 1):

if 0 <= x < r and 0 <= y - i < c and len(res) < r * c:

y -= offset

for i in range(1, offset + 1):

if 0 <= x - i < r and 0 <= y < c and len(res) < r * c:

x -= offset

return res

if __name__ == '__main__':

s = solution()

r = 5

c = 6

r0 = 1

c0 = 4

ans = s.spiralmatrixiii(r, c, r0, c0)

print(ans)

螺旋矩陣 leetcode

螺旋矩陣 給定乙個包含 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,...

Leetcode 螺旋矩陣

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

LeetCode 螺旋矩陣

題目 給你乙個 m 行 n 列的矩陣 matrix 請按照 順時針螺旋順序 返回矩陣中的所有元素。輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 思路 使用left,right,up,down四個邊界值來順時針遍歷矩陣,每迴圈一次邊界值往內縮1,即l...