LeetCode 221場周賽題解

2021-10-13 19:00:43 字數 2937 閱讀 3715

解題思路:直接模擬即可。

時間複雜度:o(s.length)

解題**如下:

解題思路:這道題的核心思路是要每次優先吃最早過期的蘋果。然後,我們用優先佇列儲存到當前時間為止擁有的蘋果(蘋果有數量和過期時間兩個屬性),每次從優先佇列裡面取出最早過期的蘋果。

如果取到的蘋果已經過期,即過期的時間小於等於當前的天數,那麼將其從優先佇列中移除並繼續取。直到取到第乙個可以吃的蘋果,並吃掉它,將它的數量減1,如果蘋果的數量不為0,則再次將其放入優先佇列。

直到隊列為空,程式結束。

時間複雜度:o(nlogn)

解題**

解題思路:仔細觀察可以發現

解題**如下:

class

solution

for(

int i =

0; i < m;

++i)

int now = ans[j]

;// 得到小球在這一列的位置

// 根據輔助圖, 如果在當前格仔中 為'\',那麼它右邊格仔也應該為'\',小球才能移動到下一行

解題思路:我們可以使用01字典樹來儲存陣列中的所有元素。另外,由於每個查詢包含乙個上界m

im_i

mi​,因此我們可以在字典樹的每乙個節點再維護乙個以當前節點為根節點的子樹的最小元素。它的作用是,如果當前節點的子樹的最小元素大小都大於m

im_i

mi​,我們就沒有必要繼續對這個子樹進行搜尋了。

然後考慮每一次查詢,我們從高位到低位進行依次處理,實際上有以下兩種情況:

如果我們能順利走到了最低位,那麼我們就獲得了這一查詢的最優解。

時間複雜度:o(n+q*log(maxx))

空間複雜度:o(nlog(maxx)+q)

解題**如下:

struct trienode ;}

;class

solution

} vector<

int> ans;

for(

int j =

0; j < queries.

size()

; j++

)elseif(

!p->children[1]

||(p-

>children[1]

->minn > limit)

)else

}else

elseif(

!p->children[0]

)else}if

(i ==

0) ans.

push_back

(sum);}

}return ans;}}

;

歡迎關注giantpandacv, 在這裡你將看到獨家的深度學習分享,堅持原創,每天分享我們學習到的新鮮知識。( • ̀ω•́ )✧

LeetCode第 221 場周賽

class solution if q.empty return s 貪心 考慮優先選擇快過期的吃。1706.球會落何處 class solution if y 0 g x y 1 g x y 1 1 return dfs g,x 1,y 1 return 1 vector int findball...

力扣第 221 場周賽

class solution def halvesarealike self,s str bool score a e i o u a e i o u a s len s 2 b s len s 2 sa 0for ch in a if ch in score sa 1 sb 0for ch in ...

LeetCode221 最大正方形

在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。示例 輸入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 4 動態規劃問題。設二維陣列dp m n 其中dp i j 表示以座標 i,j 為右下角元素的最大正方形的邊長。通過觀...