LeetCode 第186場周賽

2021-10-05 11:39:42 字數 2542 閱讀 5829

周賽小結

p1:可以統計總的0,1個數,然後從左往右掃,就可以了。看了下資料比較小,就寫的很暴力。

from collections import counter as c

class

solution

:def

maxscore

(self, s:

str)

->

int:

n, ret =

len(s),0

for i in

range

(n):

ifnot s[

0:i]

ornot s[i:]:

continue

ret =

max(ret, c(s[

0:i])[

'0']

+ c(s[i:])

['1'])

return ret

p2:

左邊拿乙個,右邊拿乙個,最後剩下中間的n-k個,一定是連續的。找到連續n-k個元素的最小,就算好了。

wa了兩次,第一次,我是用左邊取i個,右邊取k-i個,然後寫了個遞迴,超時了。第二次忘了。

class

solution

:def

maxscore

(self, a: list[

int]

, k:

int)

->

int:

n,m =

len(a)

,pow(10

,9) dp,k =[0

]*n,n-k

for i,x in

enumerate

(a):

if i !=

0: dp[i]

= dp[i-1]

+x else

: dp[i]

= x for i in

range

(n):

if i+k > n:

break

m =min(m, dp[i+k-1]

-dp[i-1]

)if i !=

0else

min(m, dp[k-1]

)return dp[-1

]- m

p3:

這個題資料規模比較大, 不能遍歷index

但是可以把元素按對角線對齊,第k次操作,需要刪掉第k行的第乙個元素,以及它前面每一行的第乙個元素。如果行沒元素,把行刪了,同時更新k

class

solution

:def

finddiagonalorder

(self, a:[[

int]])

-> list[

int]

: ret,k =

,0while a:

for i in

range

(k,-1,

-1):

ifnot a[i]

:del a[i]

k -=

1continue[0

])del a[i][0

] k +=

1if k <

len(a)-1

else

0return ret

p4:

dp+維護k長度的陣列

**沒幾行, 不過寫了個bug, 刪除元素的時候, 二分搜尋bisect預設使用bisect_right然後的搜尋元素的後乙個座標要減一。

import bisect

class

solution

:def

constrainedsubsetsum

(self, a: list[

int]

, k:

int)

->

int:

dp, m =[0

]*len(a),-

pow(10,

9)mem =

for i in

range

(len

(a))

: dp[i]

= a[i]

iflen

(mem)

< k:

dp[i]

=max

(dp[i]

, a[i]

+m) bisect.insort(mem, dp[i]

)else

: dp[i]

=max

(dp[i]

, a[i]

+mem[-1

])bisect.insort(mem, dp[i]

)del mem[bisect.bisect(mem, dp[i-k])-

1]m =

max(m, dp[i]

)return m

leetcode系列 演算法 第 186 場周賽

右邊的為1的個數,先遍歷一次,計算有多少個1 新增三個變數,left為左半部分0的個數,初始化為0 right為右半部分1的個數,初始化為上一步的統計值 max sum為當前left right的最大值 然後再次遍歷字串,如果是0,則left 1 如果是1,則right 1 更新max sum ma...

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...