在二維地圖上, 0代表海洋, 1代表陸地,我們最多只能將一格 0 海洋變成 1變成陸地。
進行填海之後,地圖上最大的島嶼面積是多少?(上、下、左、右四個方向相連的 1 可形成島嶼)
示例 1:
輸入: [[1, 0], [0, 1]]
輸出: 3
解釋: 將一格0變成1,最終連通兩個小島得到面積為 3 的島嶼。
示例 2:
輸入: [[1, 1], [1, 0]]
輸出: 4
解釋: 將一格0變成1,島嶼的面積擴大為 4。
示例 3:
輸入: [[1, 1], [1, 1]]
輸出: 4
解釋: 沒有0可以讓我們變成1,面積依然為 4。
說明:
並查集我們先將相連的陸地加到同乙個集合中,這樣我們能得到多個集合。然後,我們遍歷海洋,我們將其變成陸地,我們加上周圍相連陸地所在集合的元素個數便是新島的面積,這裡需要注意一點,同乙個集合只會計算一次,我們需要用乙個set集合記錄,避免重複計算。詳細過程見**
class
ufint
find
(int x)
return x;
}void
union
(int x,
int y)
else
}int
getsize
(int x)};
class
solution
if(j-
1>=
0&& grid[i]
[j-1]==
1)ans =
max(ans,uf.
getsize
(i*n+j));
}}}int dir[4]
[2]=
,,,}
; set<
int> visit;
for(
int i=
0; i}}
visit.
clear()
; ans =
max(ans,now);}
}}return ans;}}
;
827 最大人工島
給你乙個大小為 n x n 二進位制矩陣 grid 最多 只能將一格 0 變成 1 返回執行此操作後,grid 中最大的島嶼面積是多少?島嶼 由一組上 下 左 右四個方向相連的 1 形成。class solution int dc new int int grid int n public int ...
827 最大人工島 C 深度優先遍歷
深度優先遍歷2次 第一次將各個島分類,同乙個島上的格仔使用同一種編號,並且得到每個島嶼的大小 第二次試著將所有海洋都填一遍,找出最大的結果。class solution public intlargestisland vector int grid if sumarea 0 else if suma...
LeetCode 最大矩形
q 給出乙個只包含0和1的二維矩陣,找出最大的全部元素都是1的長方形區域,返回該區域的面積。a 這個題感覺蠻巧妙的。如果這個點為 1 先計算當前行的最大寬度,這說明最大寬度左邊的都是保證可以是矩形的。然後往上看,用最小的寬度和當前的高度計算最大的矩形。看圖 同理,高度也可以這麼做。另一種就是參考計算...