力扣打卡2021 1 16 打磚塊

2021-10-14 23:41:42 字數 2241 閱讀 1347

題目:

有乙個 m x n 的二元網格,其中 1 表示磚塊,0 表示空白。磚塊 穩定(不會掉落)的前提是:

一塊磚直接連線到網格的頂部,或者

至少有一塊相鄰(4 個方向之一)磚塊 穩定 不會掉落時

給你乙個陣列 hits ,這是需要依次消除磚塊的位置。每當消除 hits[i] = (rowi, coli) 位置上的磚塊時,對應位置的磚塊(若存在)會消失,然後其他的磚塊可能因為這一消除操作而掉落。一旦磚塊掉落,它會立即從網格中消失(即,它不會落在其他穩定的磚塊上)。

返回乙個陣列 result ,其中 result[i] 表示第 i 次消除操作對應掉落的磚塊數目。

注意,消除可能指向是沒有磚塊的空白位置,如果發生這種情況,則沒有磚塊掉落。

示例 1:

輸入:grid = [[1,0,0,0],[1,1,1,0]], hits = [[1,0]]

輸出:[2]

解釋:網格開始為:

[[1,0,0,0],

[1,1,1,0]]

消除 (1,0) 處加粗的磚塊,得到網格:

[[1,0,0,0]

[0,1,1,0]]

兩個加粗的磚不再穩定,因為它們不再與頂部相連,也不再與另乙個穩定的磚相鄰,因此它們將掉落。得到網格:

[[1,0,0,0],

[0,0,0,0]]

因此,結果為 [2] 。

示例 2:

輸入:grid = [[1,0,0,0],[1,1,0,0]], hits = [[1,1],[1,0]]

輸出:[0,0]

解釋:網格開始為:

[[1,0,0,0],

[1,1,0,0]]

消除 (1,1) 處加粗的磚塊,得到網格:

[[1,0,0,0],

[1,0,0,0]]

剩下的磚都很穩定,所以不會掉落。網格保持不變:

[[1,0,0,0],

[1,0,0,0]]

接下來消除 (1,0) 處加粗的磚塊,得到網格:

[[1,0,0,0],

[0,0,0,0]]

剩下的磚塊仍然是穩定的,所以不會有磚塊掉落。

因此,結果為 [0,0] 。

**(逆序+並查集):

class

unionfind

}int

find

(int x)

int newf =

find

(f[x]);

f[x]

= newf;

return f[x];}

void

merge

(int x,

int y)

f[fx]

= fy;

sz[fy]

+= sz[fx];}

intsize

(int x)};

class

solution

for(

int i =

0; i < h; i++)if

(i >

0&& status[i -1]

[j]==1)

if(j >

0&& status[i]

[j -1]

==1)}

}}const vectorint,

int>> directions,,

,}; vector<

int>

ret(hits.

size()

,0);

for(

int i = hits.

size()

-1; i >=

0; i--

)int prev = uf.

size

(h * w);if

(r ==0)

for(

const

auto

[dr, dc]

: directions)}}

int size = uf.

size

(h * w)

; ret[i]

=max(0

, size - prev -1)

; status[r]

[c]=1;

}return ret;}}

;

力扣打卡2021 2 20 陣列的度

題目 給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是在 nums 中找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2...

力扣打卡2021 1 8旋轉陣列問題

題目 給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1,2,3,4,5,6,7 和 k 3 輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2...

力扣打卡2021 1 24 最長連續遞增序列

題目 給定乙個未經排序的整數陣列,找到最長且 連續遞增的子串行,並返回該序列的長度。連續遞增的子串行 可以由兩個下標 l 和 r l r 確定,如果對於每個 l i r,都有 nums i nums i 1 那麼子串行 nums l nums l 1 nums r 1 nums r 就是連續遞增子串...