Skip to content

Commit 8fc6ad3

Browse files
authored
Update Readme.md
1 parent df9ba1c commit 8fc6ad3

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

DFS/803.Bricks-Falling-When-Hit/Readme.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
### 803.Bricks-Falling-When-Hit
22

3+
#### 解法1:DFS
4+
35
这题咋看上去很难,但实际上用“时光倒流”的想法就很方便。
46

57
假想在所有的erasure完成之后,这些砖块有些与top相连(成为大陆)),有些则是孤立的岛屿。我们考察最后一次抽掉的砖块,如果“复原”它能使得一些孤立的岛屿与大陆相连的话,那么这些岛屿的面积S,其实就是最后一次erasure所造成砖块掉落的数量。OK,就算这次“复原”不能使得任何岛屿与大陆相连,但也有可能会使得一部分岛屿之间相连,这样下一次“复原”的时候就有可能使得这一块更大的岛屿与大陆相连。以此方法不停地往回追溯上去。
@@ -14,5 +16,10 @@
1416

1517
4.依次类推处理所有的erasure。
1618

19+
#### 解法2:Union Find
20+
21+
同样是时光倒流的想法。将所有erasure之后的地图通过Union Find得到各个联通区域。特别注意,Union的时候不仅要更新每个格子的Father,还要更新每个格子的Father的Size,也就是该联通块的大小。
22+
23+
逆序处理每一个erasure的时候,查看该格子(x,y)相邻的四个位置。如果有一个相邻的位置(i,j)的Father是第一行,或者(x,y)本身就是第一行,那么它的擦除就一定会导致砖块的掉落。掉落的个数就是与(x,y)相邻的、Father不是第一行的联通块的大小的总和。
1724

1825
[Leetcode Link](https://leetcode.com/problems/bricks-falling-when-hit)

0 commit comments

Comments
 (0)