res =
0 n =
len(grid)
heap =
[(grid[0]
[0],
0,0)
]#初始化第乙個點
visited =
set([(
0,0)
])#我們建立個集合儲存我們走過的點,不需要再走一遍了
while heap:
res =
max(res,height)
#我們選取最高水位作為返回值
if x == n-
1and y == n-1:
return res
for dx,dy in[(
0,1)
,(0,
-1),
(1,0
),(-
1,0)
]:#上下左右一次走一遍
new_x,new_y = x + dx,y + dy
if0<= new_x < n and
0<= new_y < n and
(new_x,new_y)
notin visited:
#判斷是否越界和走過
visited.add(
(new_x,new_y)
)(grid[new_x]
[new_y]
,new_x,new_y)
)#我們按照優先順序佇列加入並排序
return
-1
778 水位上公升的泳池中游泳
778.水位上公升的泳池中游泳 在乙個 n x n 的座標方格grid中,每乙個方格的值grid i j 表示在位置 i,j 的平台高度。現在開始下雨了。當時間為t時,此時雨水導致水池中任意位置的水位為t。你可以從乙個平台遊向四周相鄰的任意乙個平台,但是前提是此時水位必須同時淹沒這兩個平台。假定你可...
778 水位上公升的泳池中游泳 並查集
778.水位上公升的泳池中游泳 難度困難159 在乙個 n x n 的座標方格grid中,每乙個方格的值grid i j 表示在位置 i,j 的平台高度。現在開始下雨了。當時間為t時,此時雨水導致水池中任意位置的水位為t。你可以從乙個平台遊向四周相鄰的任意乙個平台,但是前提是此時水位必須同時淹沒這兩...
每日一題 778 水位上公升的泳池中游泳
778.水位上公升的泳池中游泳 分類 並查集 二分答案 最短路 並查集思路挺簡單的。由小到大挨個加,檢查下連上了沒就行。class unionfind introot int i bool connect int i,int j if sz ri sz rj u rj ri sz ri sz rj ...