題目:
在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 /、示例 1:或空格構成。這些字元會將方塊劃分為一些共邊的區域。(請注意,反斜槓字元是轉義的,因此 \ 用 「\」 表示。)。返回區域的數目。
輸入:示例 2:[" /",
"/ "
]輸出:2
解釋:2x2 網格如下:
輸入:示例 3:[" /",
" "]
輸出:1
解釋:2x2 網格如下:
輸入:示例 4:[「\/」,
「/\」
]輸出:4
解釋:(回想一下,因為 \ 字元是轉義的,所以 「\/」 表示 /,而 「/\」 表示 /\。)
2x2 網格如下:
輸入:示例 5:[「/\」,
「\/」
]輸出:5
解釋:(回想一下,因為 \ 字元是轉義的,所以 「/\」 表示 /\,而 「\/」 表示 /。)
2x2 網格如下:
輸入:參考了題解中的深度優先搜尋的方法,先是通讀了一遍題解的思路然後理解了一下,之後又嘗試了自己復現一下,最終發現判斷』/『和』\'的時候出現了疏忽,不過還好找到了問題。[「//」,
"/ "
]輸出:3
解釋:2x2 網格如下:
**:
class
solution
:def
regionsbyslashes
(self, grid: list[
str])-
>
int:
#建立圖,把grid中的每乙個小的分割變成3x3的格仔
new_grid=
x_=len(grid[0]
) y_=
len(grid)
for a in
range(3
*y_)
:#根據grid的豎向長度乘以3進行迴圈[0
for b in
range(3
*x_)])
#根據grid的寬度乘三進行新增
for y in
range
(y_)
:for x in
range
(x_)
:#b為空格的情況就不需要進行判斷了,因為在上面建立new_grid的時候按全是空格新增的
if grid[y]
[x]==
'/':
new_grid[
3*y][3
*x+2]=
1 new_grid[
3*y+1]
[3*x+1]=
1 new_grid[
3*y+2]
[3*x]=
1if grid[y]
[x]==
'\\'
: new_grid[
3*y][3
*x]=
1 new_grid[
3*y+1]
[3*x+1]=
1 new_grid[
3*y+2]
[3*x+2]=
1def
dfs(y,x):if
0<=y<
3*y_ and
0<=x<
3*x_ and new_grid[y]
[x]==0:
#判斷當前格仔是否為0 並且座標是否還在範圍之內
new_grid[y]
[x]=
1#將當前格仔變為1防止之後出現問題
#從當前格仔向上下左右分開判斷如果還是0那麼與當前格仔屬於同一部分,如果為1則是遇到邊界或者其他部分
dfs(y+
1,x)
dfs(y-
1,x)
dfs(y,x+1)
dfs(y,x-1)
result=
0for y in
range(3
*y_)
:for x in
range(3
*x_)
:if new_grid[y]
[x]==0:
#找到乙個0就相當於找到了乙個部分
result+=
1 dfs(y,x)
return result
959 由斜槓劃分區域
在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 或空格構成。這些字元會將方塊劃分為一些共邊的區域。返回區域的數目。思路 首先需要思考題目轉換,這是求連通塊個數的題目。因為是連通塊個數問題,所以用並查集解決。然後就只要考慮幾個問題就好了 1.最小單位應該是多大?...
力扣 由斜槓劃分區域
在由 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 輸入...