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