leetcode動態或貪心 最大正方形

2021-10-05 15:00:18 字數 1752 閱讀 5339

我覺得我寫的**很奇怪,但是過了

def

maximalsquare

(self, matrix: list[list[

str]])

->

int:

iflen

(matrix)==0

:return

0 m =

len(matrix)

n =len(matrix[0]

) dp =[[

0for j in

range(1

+n)]

for i in

range(1

+m)]

ms =

0for ii in

range

(m):

for ji in

range

(n):

val = matrix[ii]

[ji]

i = ii+

1 j = ji+

1if val ==

'1':

ms =

min(dp[i]

[j-1

],dp[i-1]

[j],dp[i-1]

[j-1])

dp[i]

[j]=

1+ms+2*

int(

pow(ms,

0.5)

) ms =

max(ms,dp[i]

[j])

return ms

計算座標(i,j)的矩形面積依賴於(i-1,j),(i,j-1),(i-1,j-1)的矩形面積. 對於正方形s=d

2s = d^2

s=d2

s為面積,d為邊長.

當然如下形式更好一點.

def

maximalsquare

(self, matrix: list[list[

str]])

->

int:

iflen

(matrix)==0

:return

0 m =

len(matrix)

n =len(matrix[0]

) dp =[[

0for j in

range(1

+n)]

for i in

range(1

+m)]

ms =

0for ii in

range

(m):

for ji in

range

(n):

val = matrix[ii]

[ji]

i = ii+

1 j = ji+

1if val ==

'1':

#dp為邊長

dp[i]

[j]=1+

min(dp[i]

[j-1

],dp[i-1]

[j],dp[i-1]

[j-1])

ms =

max(ms,dp[i]

[j])

return ms*ms

leetcode 貪心 貪心演算法 最大子序和

通知 我將演算法學習相關的資料已經整理到了github 裡面還有leetcode刷題攻略 各個型別經典題目刷題順序 思維導圖看一看一定會有所收穫,如果給你有幫助給乙個star支援一下!給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1...

hdu 5969 最大的位或(貪心)

對於乙個l和r 我們都看成2進製 最優情況一定是1000和0111來異或這樣就能得到在位數不可能改變的情況下能夠得到的最大值,那麼如果l到r能夠存在這種情況就這麼異或 但如果l和r的位數相同,那麼就保留前面相同位數上的0和1,一旦遇到不同則按照以上方法對低位取 xx1000和 xx0111異或 in...

LeetCode 最大整除子集(動態規劃)

給出乙個由無重複的正整數組成的集合,找出其中最大的整除子集,子集中任意一對 si,sj 都要滿足 si sj 0 或 sj si 0。如果有多個目標子集,返回其中任何乙個均可。示例 1 輸入 1,2,3 輸出 1,2 當然,1,3 也正確 示例 2 輸入 1,2,4,8 輸出 1,2,4,8 思路分...