作者:
dont 2024-11-28 21:52:43※ 引述《JIWP (神楽めあ的錢包)》之銘言:
: 2290. Minimum Obstacle Removal to Reach Corner
: 思路:
: (2) BFS
可以直接用一個Deque (cost, r, c)
grid[i][j]=0就加到前面
grid[i][j]=1就加到後面
```python
class Solution:
def minimumObstacles(self, grid: List[List[int]]) -> int:
len_r, len_c = len(grid), len(grid[0])
grid[0][0] = -1
queue = deque([(0, 0, 0)]) # cost, r, c
while queue:
cost, r, c = queue.popleft()
if r == len_r-1 and c == len_c-1:
return cost
for nr, nc in (r+1, c), (r-1, c), (r, c+1), (r, c-1):
if 0 <= nr < len_r and 0 <= nc < len_c and grid[nr][nc] != -1:
if grid[nr][nc] == 0:
queue.appendleft((cost, nr, nc))
else:
queue.append((cost+1, nr, nc))
grid[nr][nc] = -1
```