959 由斜槓劃分區域

2021-10-17 11:27:13 字數 1044 閱讀 6608

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

思路:首先需要思考題目轉換,這是求連通塊個數的題目。因為是連通塊個數問題,所以用並查集解決。然後就只要考慮幾個問題就好了:

1.最小單位應該是多大?

這裡應該是乙個單位的正方形被x劃分成四個部分。把單位取的盡可能小,這樣的話斜槓和反斜槓的情況比較容易統一。

2.怎麼合併?

2.1 單位正方形內的合併。

此正方形對應的符號:空格的話合併四小塊,/合併左上三角和右下三角,\合併右上三角和左下三角。

2.2 正方形間的合併

考慮合併方向,如果是邊展開整個圖案然後邊合併的話。就可以考慮乙個到達乙個新的正方形的時候,和它左邊的合併(也就是新的的第三塊和左邊的正方形的第1塊合併),和它上邊的合併(也就是新的的第0塊和上邊的正方形的第2塊合併)

3.怎麼編號?

n * n的圖形,會分成 4 * n * n 的最小單位,然後單位正方形內可以順時針編號。

**:

class

solution

intfind

(int p)

void

union

(int p,

int q)

}int

regionsbyslashes

(vector

& grid)

else

if(grid[i]

[j]==

'/')

else

if(grid[i]

[j]==

'\\'

)//考慮組間

if(j>0)

if(i>0)

}return count;}}

;

今天又打了卡又寫了部落格,獎勵自己一杯machimachi!

959 由斜槓劃分區域 力扣

題目 在由 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...