看板 Marginalman
※ 引述《enmeitiryous (enmeitiryous)》之銘言: : 題目: 2326. Spiral matrix IV : 給你一個Link list,指定整數m,n請將Link list中的值從0,0的位置開始順時針螺旋的 : 填入m*n的2D vector中,不足者全填-1 : 思路: : 照做,可以先用兩組vector紀錄x,y的移動慣例方向,當填完數字後看更新後的x,y loc : 有沒有超出0-n-1, 0-m-1的範圍或是碰到ans[y][x]!=-1的格子,如果有的話則復原重新 : 換方向更新,beat70%以上有蠻多新做法來完成這個動作,可以多參考 思路: 差不多 找邊界照著做 只是寫得自己覺得很魔幻 Python Code: class Solution: def spiralMatrix(self, m: int, n: int, head: Optional[ListNode]) -> List[List[int]]: idx = x = y = 0 matrix = [[-1] * n for _ in range(m)] min_x, min_y, max_x, max_y = -1, -1, n, m while head: if matrix[y][x] == -1: matrix[y][x] = head.val head = head.next match idx: case 0: x += 1 if x >= max_x: x -= 1 y += 1 idx = (idx + 1) % 4 min_y += 1 case 1: y += 1 if y >= max_y: y -= 1 x -= 1 idx = (idx + 1) % 4 max_x -= 1 case 2: x -= 1 if x <= min_x: x += 1 y -= 1 idx = (idx + 1) % 4 max_y -= 1 case 3: y -= 1 if y <= min_y: y += 1 x += 1 idx = (idx + 1) % 4 min_x += 1 return matrix 也可以用 if 可以少一個縮排 不過想說第一次通過是用 match 就不換了 640 ms / 54.59 MB -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.52.67 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1725853613.A.9E4.html