我覺得我寫的**很奇怪,但是過了
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 思路分...