LeetCode 第 204 場周賽題解

2021-10-24 02:18:22 字數 3742 閱讀 5987

知識點:列舉

這道題太直白了,沒啥花裡胡哨的東西,直接列舉起點,然後檢查是否至少有 k 段重複即可。

class

solution}if

(flag)

else

if(hit+

1>= k)}}

return

false;}

};

知識點:遞推設 pos[i] 是以 nums[i] 結尾,乘積為正的最長子陣列的長度。

設 neg[i] 是以 nums[i] 結尾,乘積為負的最長子陣列的長度。

為了編寫**方便,設 nums 下標從 1 開始。那麼 pos[0] = neg[0] = 0。

接下來討論一下 nums[i] 的值如何影響 pos[i] 及 neg[i] 的計算。

當 nums[i] 為負時:

int dp[

100001][

2];// dp[i][0] 即 pos,dp[i][1] 即 neg。

class

solution

else

if(nums[i-1]

>0)

else

anw =

max(anw, dp[i][0

]);}

return anw;}}

;

知識點:bfs,思維題有個比較搞喜的地方:最多刪除兩次必可使陸地分離。

每個格仔最多會有四條邊和其他格仔相連。在邊上的格仔最多有三條邊。在角上的最多有兩條邊。無論島嶼長成什麼樣子,肯定是會有角的,所以最多隻需刪除兩次。

首先,判斷輸入本身就是分離的。

其次,暴力列舉刪除輸入中的乙個 1,然後判斷是否分離。

再其次,直接返回 2 就 ok 啦~

class

solution}if

(cnt ==0)

queue

int,

int>> q;

bool mark[30]

[30]=

; q.

push

(make_pair

(x, y));

mark[x]

[y]=

true

; cnt--

;while

(q.empty()

==false);

int dy=

;for

(int i =

0; i <

4; i++

) mark[nx]

[ny]

=true

; q.

push

(p);

cnt--;}

}}return cnt !=0;

}int

mindays

(vector

int>>

& grid)

for(

int i =

0; i < grid.

size()

; i++

) grid[i]

[j]=0;

if(check

(grid)

) grid[i]

[j]=1;

}}return2;}};

知識點:二叉搜尋樹;排列組合二叉查詢樹,又稱二叉排序樹,二叉搜尋樹。其特點是,右子樹中的元素都小於根節點,左子樹的元素都大於根節點,且左右子樹也都是二叉搜尋樹。當構造一棵二叉搜尋樹時,第乙個插入的元素必然是根節點,其後插入的元素根據與根節點的大小關係被插入到左子樹或右子樹。

由此可知,如果兩種排列對應的二叉搜尋樹相同,那麼必然第乙個元素是相同的。

設,小於第乙個的元素構成的序列為 less,大於第乙個的元素構成的序列為 greater。在不修改 less,greater 內部順序的前提下,調整 less + greater 這個大序列的順序,就能得到乙個可以構造相同二叉樹的新序列。

換個說法,less 的順序確定了元素插入左子樹的順序,同樣的,greater 確定了元素插入右子樹的順序。至於,是先構造左子樹還是構造右子樹,並不重要。所以 less + greater 的順序可以調整。

那為何 less 和 greater 的內部順序不能調整呢?其實不是不能調整,而是要放到構造左右子樹的時候再去調整

那麼,還剩最後乙個問題,less + greater,一共有多少符合要求排列方式呢?答案為 cle

ss.s

ize(

)+gr

eate

r.si

ze()

less

.siz

e()c^_

cless.

size

()+g

reat

er.s

ize(

)les

s.si

ze()

​。也就是說,一共有 x 個坑,先選出一部分放 less,剩下的放 greater

最後將每個子樹的組合數累乘即可。

第 204 場周賽

周賽爆00000,慘!列舉起點,時間複雜度o n 2 我不知道怎麼列舉偏移量,看了y總的if arr j arr i j i m j i m是模式的偏移量,這一步妙!而且記得以i為起點,長度為k m的最右端點是 i k m 1 class solution if flag return true r...

leetcode 第132場周賽

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...

leetcode周賽 第176場

題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...