LeetCode 由斜槓劃分區域 959 並查集

2021-10-01 09:22:39 字數 1940 閱讀 6704

在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 /、\ 或空格構成。這些字元會將方塊劃分為一些共邊的區域。

(請注意,反斜槓字元是轉義的,因此 \ 用 「\」 表示。)。

返回區域的數目。

示例 1:

輸入:[

" /",

"/ "

]輸出:2

解釋:2x2 網格如下:

示例 2:

輸入:[

" /",

" "]

輸出:1

解釋:2x2 網格如下:

示例 3:

輸入:[

「\/」,

「/\」

]輸出:4

解釋:(回想一下,因為 \ 字元是轉義的,所以 「\/」 表示 /,而 「/\」 表示 /\。)

2x2 網格如下:

示例 4:

輸入:[

「/\」,

「\/」

]輸出:5

解釋:(回想一下,因為 \ 字元是轉義的,所以 「/\」 表示 /\,而 「\/」 表示 /。)

2x2 網格如下:

示例 5:

輸入:[

「//」,

"/ "

]輸出:3

解釋:2x2 網格如下:

grid[i][j] 是 '/'、'\'、或 ' '。

思路:

1.區域連線求數量的問題用並查集解決

2.大方塊由n * n的個小方塊組成,將小方塊按照雙線劃分順時針分為0,1,2,3 共4個區域

3.當『/』時,小方塊的 0,3 區域連線, 1,2區域連線

當『\』時 ,小方塊的 0,1區域連線,2,3區域連線

當『 』時,小方塊4個區域連線

4.當然小方塊和小方塊之間也是相連的。

//合併周邊區域 (上下左右)

if(i -

1>=0)

if(i +

1< n)

if(j -

1>=0)

if(j +

1< n)}}

//有多少個根節點等於它自身,就有多少個區域

int ans =0;

for(

int i =

0; i < merge.parent.length; i++)}

return ans;

}class

merge

}public

intfind

(int x)

return parent[x];}

public

void

union

(int x,

int y)

}}

leetcode 由斜槓劃分區域

在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 或空格構成。這些字元會將方塊劃分為一些共邊的區域。請注意,反斜槓字元是轉義的,因此 用 表示。返回區域的數目。示例 1 輸入 輸出 2 解釋 2x2 網格如下 示例 2 輸入 輸出 1 解釋 2x2 網格如下 示...

leetcode 959 由斜槓劃分區域

目錄 一 題目內容 二 解題思路 三 在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 或空格構成。這些字元會將方塊劃分為一些共邊的區域。請注意,反斜槓字元是轉義的,因此 用 表示。返回區域的數目。示例 1 輸入 輸出 2 解釋 2x2 網格如下 示例 2 輸入...

LeetCode 959 由斜槓劃分區域

難度 中等。這個題,我不會,看別人的思路。參考 然後問題同 200.島嶼數量,遍歷0的區域。我的實現 class solution void change map int i,int j,int n public int regionsbyslashes vector grid else if gr...