当前位置: 首页 > 后端技术 > Python

力扣994,烂橘子Python实现

时间:2023-03-26 00:14:35 Python

题目要求:思路:维护一个cur,保存当前烂橘子,遍历给定数组。如果是烂橘子,将横纵坐标追加到cur数组中定义一个时间来保存时间。使用while循环遍历cur。当cur中还有元素时,继续循环。cur中存放的是烂橘子的数组下标。遍历这些烂橘子。在遍历每一个烂橙子的时候,遍历烂橙子的四个格子。橙子,把这个新鲜的橙子变成一个烂橙子,把这个新的烂橙子追加到nex数组中。遍历完成后,将nex数组赋值给cur数组,时间加1。此时cur中还有元素,继续while循环,当cur中没有元素时,遍历grid数组,看数组中是否有新鲜橘子,有则返回-1,没有则返回timetime核心代码:cur=[]foriinrange(len(grid)):forjinrange(len(grid[0])):ifgrid[i][j]==2:cur.append((i,j))#初始化为-1,因为cur最后一次遍历时,保存了数组中最后一个变成烂橘子的好橘子。这些橙子需要再次遍历,但不会腐烂其他橙子time=-1whilecur:nex=[]fori,jincur:forx,yin[(0,-1),(-1,0),(1,0),(0,1)]:tmp_i=i+xtmp_j=j+y#判断边界iftmp_i>=0andtmp_i=0andtmp_jint:如果len(grid)==1andlen(grid[-1])==1andgrid[0][0]!=1:return0cur=[]foriinrange(len(grid)):forjinrange(len(grid[0])):ifgrid[i][j]==2:cur.append((i,j))time=-1而cur:nex=[]fori,jincur:forx,yin[(0,-1),(-1,0),(1,0),(0,1)]:tmp_i=i+xtmp_j=j+y如果tmp_i>=0andtmp_i=0andtmp_j