Leetcode 1730. Shortest Path to Get Food [Python]

典型的BFS题目。

class Solution:
    def getFood(self, grid: List[List[str]]) -> int:
        Row = len(grid)
        Col = len(grid[0])
        initx = inity = -1
        for i in range(Row):
            for j in range(Col):
                if grid[i][j] == "*":
                    initx = i
                    inity = j
        dirt = [(1,0),(0,1),(-1,0),(0,-1)]
        que = collections.deque()
        que.append((initx, inity))
        step = 1
        seen = set()
        seen.add((initx,inity))
        while que:
            size = len(que)
            #print(que)
            for _ in range(size):
                x,y = que.popleft()
                
                for dx,dy in dirt:
                    newx = x + dx
                    newy = y + dy
                    if 0 <= newx < Row and 0 <= newy < Col and (newx, newy) not in seen:
                        if grid[newx][newy] == '#':
                            return step
                        elif grid[newx][newy] == 'O':
                            que.append((newx, newy))
                            seen.add((newx,newy))
                        elif grid[newx][newy] == 'X':
                            seen.add((newx,newy))                          
            step += 1
        return -1
                
            
        
        
                    

 

上一篇:Web信息安全实践_1.7 OpenSSL


下一篇:E. Subsequences (easy version)(bfs贪心)