778. 水位上公升的泳池中游泳
難度困難159
在乙個 n x n 的座標方格grid
中,每乙個方格的值grid[i][j]
表示在位置(i,j)
的平台高度。
現在開始下雨了。當時間為t
時,此時雨水導致水池中任意位置的水位為t
。你可以從乙個平台遊向四周相鄰的任意乙個平台,但是前提是此時水位必須同時淹沒這兩個平台。假定你可以瞬間移動無限距離,也就是預設在方格內部游動是不耗時的。當然,在你游泳的時候你必須待在座標方格裡面。
你從座標方格的左上平台 (0,0) 出發。最少耗時多久你才能到達座標方格的右下平台(n-1, n-1)
?
示例 1:
輸入:[[0,2],[1,3]]輸出:3解釋:時間為0時,你位於座標方格的位置為示例2:(0, 0)。
此時你不能遊向任意方向,因為四個相鄰方向平台的高度都大於當前時間為 0 時的水位。等時間到達 3 時,你才可以遊向平台 (1, 1). 因為此時的水位是 3,座標方格中的平台沒有比水位 3 更高的,所以你可以遊向座標方格中的任意位置
輸入: [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]]
輸出: 16
解釋: 0 1 2 3 4
24 23 22 21 5
12 13 14 15 16
11 17 18 19 20
10 9 8 7 6
最終的路線用加粗進行了標記。
我們必須等到時間為 16,此時才能保證平台 (0, 0) 和 (4, 4) 是連通的
class unionfind
}find(x)
return x
}union(x, y)
}}var swiminwater = function(grid) = unionfind; //
// 存下來座標
let idx = new array(n*n).fill(0).map(() => new array(2).fill(0)) // 儲存每個平台高度對應的位置
for (let i = 0; i < n; i++)
}const directions = [[0, 1], [0, -1], [-1, 0], [1, 0]]
for (let th = 0; th < n*n; th++)
if (unionfind.find(0) === unionfind.find( n * n - 1)) }}
return -1;
};
778 水位上公升的泳池中游泳
778.水位上公升的泳池中游泳 在乙個 n x n 的座標方格grid中,每乙個方格的值grid i j 表示在位置 i,j 的平台高度。現在開始下雨了。當時間為t時,此時雨水導致水池中任意位置的水位為t。你可以從乙個平台遊向四周相鄰的任意乙個平台,但是前提是此時水位必須同時淹沒這兩個平台。假定你可...
力扣778水位上公升的泳池中游泳 python
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 retu...
每日一題 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 ...