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 讀題讀了半天,幸虧不是英...