楼主: 
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
```