首页 > 其他分享 >leetcode 题库994——bfs典型解法(队列+递归实现)

leetcode 题库994——bfs典型解法(队列+递归实现)

时间:2023-08-27 13:12:09浏览次数:36  
标签:tmp 994 int queue len bfs grid 题库

 

class Solution:
    def orangesRotting(self, grid: list[list[int]]) -> int:
        m,n=len(grid),len(grid[0])
        queue,good=[],[]
        def bfs(queue,good,m,n,grid):
            times=0
            directions=[(-1,0),(1,0),(0,1),(0,-1)]
            while queue:
                tmp=len(queue)
                #print(queue,times)
                for t in range(tmp) :
                    i=queue[0]
                    for j in directions:
                        tmp1=i[0]+j[0]
                        tmp2=i[1]+j[1]
                        if 0<=tmp1<m and 0<=tmp2<n and grid[tmp1][tmp2]==1 :
                            grid[tmp1][tmp2]=2
                            queue.append((tmp1,tmp2))
                            good.remove((tmp1,tmp2))
                    queue.pop(0)
                times+=1
            if good:
                return -1
            return times-1
        for i in range(m):
            for j in range(n):
                if grid[i][j]==2:
                    queue.append((i,j))
                elif grid[i][j]==1:
                    good.append((i,j))
        if not good:
            return 0
        elif not queue:
            return -1
        return bfs(queue,good,m,n,grid)

try:
    solution=Solution()
    grid=[[2,1,1],[1,1,0],[0,1,1]]
    res=solution.orangesRotting(grid)
    print(res)
except:
    print('error')

  

标签:tmp,994,int,queue,len,bfs,grid,题库
From: https://www.cnblogs.com/tanyuanqing/p/17660167.html

相关文章

  • LeetCode题库77.组合——dfs典型解法,递归+回溯+剪枝
     classSolution:defcombine(self,n:int,k:int):nums=[x+1forxinrange(n)]res,ans=[],[]defdfs(nums:list[int]):iflen(ans)==k:ans_copy=ans.copy()#复制,避免ans数组改变使res跟着改变......
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:281-300)
    第281题OSPF协议对邻居路由器之间交换的所有数据包都具有认证能力,在VRP系统中,OSPF支持以下哪一种算法?A、DESB、MD5C、AESD、RSA答案:B解析:在VRP系统中,OSPF协议支持的认证算法是MD5。第282题以下关于堆叠拓扑连接方式的描述,错误的是哪一项?A、根据堆叠连线方式的不同,堆叠可组成链......
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)
    第261题以下关于IPv6过渡技术的描述,正确的是哪些项?A、转换技术的原理是将IPv6的头部改写成IPv4的头部,或者将IPv4的头部改写成IPv6的头部B、使用隧道技术,能够将IPv4封装在IPv6隧道中实现互通,但是隧道的端点需要支持双栈技术C、转换技术适用于纯IPv4网络与纯IPv6网络之间的通信,方......
  • AOJ0121(Seven Puzzle, BFS+Cantor+逆向思维)
    参考康托展开自己真的一点头绪都没有,根据前面的大神博客自己几乎100%复制了一个,但是还是WA,觉得还是出在选方向时的判断上面。Cantor感觉这个可以作为模板,状态压缩的一个思路。还有就是BFS特点:1.从一个起点到一个终点2.起点和终点可以互相到达,双向的//#defineLOCAL#include......
  • AOJ0558(cheese, BFS)
    typicalBFSusage:firstuse2array,oneforrecordmap,theotherforshortestpath/flagvisit.BFSfeature:theshortestpathfromonetotheother,justonepoint!!!!(单源路)//#defineLOCAL#include<cstdio>#include<cstring>#include<......
  • perlapp BFS格式分析
    perlappBFS格式分析1、加载资源中加密的BFSLoadResource_BFS_406670LPVOID*__fastcallLoadResource_BFS_406670(char*Source){//[COLLAPSEDLOCALDECLARATIONS.PRESSKEYPADCTRL-"+"TOEXPAND]v2=(BFS**)malloc(0x28ui64);v3=v2;if(!v2)r......
  • bfs 双向宽搜
     1、迷宫问题,找最短路:可以同时从起点和终点进行bfs,两个方向搜索的新节点分别存在不同的队列中的,若新节点在对面的状态集合中出现过,说明相遇了。2、很多bfs问题,都可以用双向宽搜,提高效率。3、分油问题,能不能用双向宽搜呢?3个无刻度的油瓶的容量是1073,其中分别有油10,0,0......
  • 北大ACM poj3994 Probability One
    ProbabilityOneTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:938 Accepted:660DescriptionNumberguessingisapopulargamebetweenelementary-schoolkids.Teachersencouragepupilstoplaythegameasitenhancestheirarithmeticski......
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:161-180)
    第161题以下关于URPF(UnicastReversePathForwarding)的描述,正确的是哪一项A、部署了严格模式的URPF,也能够可以同时部署允许匹配缺省路由模式B、如果部署松散模式的URPF,默认情况下不需要匹配明细路由C、如果部署松散模式的URPF,如果需要检查默认路由,则需要检查接口是否匹配......
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:101-120)
    第101题可用于多种路由协议,由if-match和apply子句组成的路由选择工具是A、route-policyB、IP-PrefixC、commnityfilterD、as-path-filter答案:A解析:Route-policy(路由策略)是一个用于多种路由协议的工具,它由if-match子句和apply子句组成。if-match子句用于匹配路由属性条件,而apply......