力扣第 221 場周賽

2021-10-13 04:22:21 字數 3277 閱讀 4612

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 b:

if ch in score:

sb +=

1return sa == sb

emmm。。。一開始暴力模擬直接tle了

然後改變了一下策略,用ind來記錄當前天數,然後每次碰到蘋果的時候,判斷它生長出來的天數和保質期還有當天天數的關係,沒有腐爛則吃掉它

想當然的選擇了最先生長出來的蘋果吃掉,提交上去wa了,意識到這個策略不對,應該盡可能的選取即將要腐爛的蘋果吃掉,而不是最先生長出來的蘋果

既然要統計即將腐爛的蘋果,想當然的使用優先佇列,python裡面的用小根堆來實現(不過python的heapq用起來真的不太順手。。。看來有必要用c++刷題)

那麼我們如何更好的判斷乙個蘋果是否腐爛,注意到days[i]是它的保質期,如果這個蘋果在第ind天長出來,那麼它最多能保持到第ind+days[i]天,我們將這個資訊入隊,然後判斷這個資訊即可

然後我們貪心的策略就是,從一堆蘋果中盡可能地選取快要腐爛的蘋果作為當前的選擇即可

class

solution

:def

int]

, days: list[

int])-

>

int:

que =

heapq.heapify(que)

ans =

0 ind =

1for a,d in

zip:

# 小根堆,注意是腐爛日期記錄在前

[d + ind, a]

)while que !=

:if top[1]

==0or top[0]

<= ind:

continue

# 吃掉乙個蘋果

top[1]

-=1ans +=

1# 吃掉後記得break

break

# 天數往後移

ind +=

1while que !=

:if top[1]

==0or top[0]

<= ind:

continue

# 吃掉乙個蘋果

top[1]

-=1ans +=

1# 天數往後移

ind +=

1return ans

class

solution

:def

int]

, days: list[

int])-

>

int:

que =

heapq.heapify(que)

ans =

0 ind =

1for a,d in

zip:

# 小根堆,注意是腐爛日期記錄在前

[d + ind, a]

)while que !=

:if top[1]

==0or top[0]

<= ind:

continue

# 吃掉乙個蘋果

top[1]

-=1ans +=

1# 吃掉後記得break

break

# 天數往後移

ind +=

1while que !=

:if top[1]

==0or top[0]

<= ind:

continue

eats =

min(top[1]

,top[0]

- ind)

ans += eats

# 天數往後移

ind += eats

return ans

這題是沒來得及寫的,當場寫一下

還是模擬題

class

solution

:def

findball

(self, grid: list[list[

int]])

-> list[

int]

: m, n =

len(grid)

,len

(grid[0]

) ans =[0

for _ in

range

(n)]

defdfs

(x,y)

:# print(x,y)

# 卡在邊界

if y <

0or y>=n:

return-1

# 沒有卡在邊界,同時滾動到底部

if x >= m:

return y

# 向右下角走

if grid[x]

[y]==1:

# 檢查是否會構成v

if y < n -

1and grid[x]

[y+1]==

-1:return-1

return dfs(x+

1,y+1)

else

:if y>

0and grid[x]

[y-1]==

1:return-1

return dfs(x+

1,y-1)

for i in

range

(n):

ans[i]

= dfs(

0,i)

return ans

暴力dfs過了。。。講道理第二題比第三題難想多了

不會

力扣第165場周賽

a 和 b 在乙個 3 x 3 的網格上玩井字棋。井字棋遊戲的規則如下 玩家輪流將棋子放在空方格 上。第乙個玩家 a 總是用 x 作為棋子,而第二個玩家 b 總是用 o 作為棋子。x 和 o 只能放在空方格中,而不能放在已經被占用的方格上。只要有 3 個相同的 非空 棋子排成一條直線 行 列 對角線...

力扣第 202 場周賽

傳送門 5185 存在連續三個奇數的陣列 給你乙個整數陣列 arr,請你判斷陣列中是否存在連續三個元素都是奇數的情況 如果存在,請返回 true 否則,返回 false 示例 1 輸入 arr 2,6,4,1 輸出 false 解釋 不存在連續三個元素都是奇數的情況。示例 2 輸入 arr 1,2,...

力扣 第 208 場周賽

今晚剩乙個小時左右了emmmm能寫多少寫多少哈,並且小白做題慢,還要參考大佬的題解優化emmmmm肯定做不完吶吶吶 我才不會說是因為我不會做呢 那,就開始咯 模擬一下棧的思路,還行吧 就是,一開始想多了,想匹配所有字元emmmm關鍵 還涉及轉製 俺還寫了測試主函式emmmm 讀題讀了半天,幸虧不是英...