694不同島嶼的數量

2021-10-18 23:19:23 字數 1341 閱讀 6328

給定乙個非空 01 二維陣列表示的網格,乙個島嶼由四連通(上、下、左、右四個方向)的 1 組成,你可以認為網格的四周被海水包圍。

請你計算這個網格中共有多少個形狀不同的島嶼。兩個島嶼被認為是相同的,當且僅當乙個島嶼可以通過平移變換(不可以旋轉、翻轉)和另乙個島嶼重合。

示例 :

11011

10000

00001

11011

給定上圖,返回結果 3 。

注意:111和

111是不同的島嶼,因為我們不考慮旋轉、翻轉操作。

1.dfs搜尋到所有島嶼,並且儲存其profile,然後sort排序unique去重,即為不同島嶼數量

class

solution

;int dy[4]

=;intnumdistinctislands

(vectorint>>

& grid)}}

sort

(profiles.

begin()

,profiles.

end())

;return

unique

(profiles.

begin()

,profiles.

end())

-profiles.

begin()

;}void

dfs(vectorint>>

& grid,

int x,

int y,

int i,

int j,vectorint,

int>>

& profile));

for(

int k=

0;k<

4;k++)}

};

2.set

class

solution

;int dy[4]

=;intnumdistinctislands

(vectorint>>

& grid)}}

//sort(profiles.begin(),profiles.end());

return profiles.

size()

;}void

dfs(vectorint>>

& grid,

int x,

int y,

int i,

int j,vectorint,

int>>

& profile));

for(

int k=

0;k<

4;k++)}

};

694 不同島嶼的數量

題目描述 給定乙個非空 01 二維陣列表示的網格,乙個島嶼由四連通 上 下 左 右四個方向 的 1 組成,你可以認為網格的四周被海水包圍。請你計算這個網格中共有多少個形狀不同的島嶼。兩個島嶼被認為是相同的,當且僅當乙個島嶼可以通過平移變換 不可以旋轉 翻轉 和另乙個島嶼重合。示例 1 11000 1...

島嶼的數量(思維)

題目 有n個島連在一起形成了乙個大的島嶼,如果海平面上公升超過某些島的高度時,則這個島會被淹沒。原本的大島嶼則會分為多個小島嶼,如果海平面一直上公升,則所有島都會被淹沒在水下。給出n個島的高度。然後有q個查詢,每個查詢給出乙個海平面的高度h,問當海平面高度達到h時,海上共有多少個島嶼。例如 島嶼的高...

島嶼的數量 (思維)

有n個島連在一起形成了乙個大的島嶼,如果海平面上公升超過某些島的高度時,則這個島會被淹沒。原本的大島嶼則會分為多個小島嶼,如果海平面一直上公升,則所有島都會被淹沒在水下。給出n個島的高度。然後有q個查詢,每個查詢給出乙個海平面的高度h,問當海平面高度達到h時,海上共有多少個島嶼。例如 島嶼的高度為 ...