動態規劃 leetcode 1314

2021-10-22 18:26:47 字數 1293 閱讀 9231

題目:

給你乙個 m * n 的矩陣 mat 和乙個整數 k ,請你返回乙個矩陣 answer ,其中每個 answer[i][j] 是所有滿足下述條件的元素 mat[r][c] 的和:

i - k <= r <= i + k, j - k <= c <= j + k

(r, c) 在矩陣內。

解答:

class

solution

:def

matrixblocksum

(self, mat: list[list[

int]

], k:

int)

-> list[list[

int]]:

m=len(mat)

n=len(mat[0]

) dp=[[

0]*(n+1)

for _ in

range

(m+1)]

#先求出字首和

for i in

range(1

,m+1):

for j in

range(1

,n+1):

dp[i]

[j]=dp[i]

[j-1

]+dp[i-1]

[j]-dp[i-1]

[j-1

]+mat[i-1]

[j-1

]#計算answer矩陣

answer=[[

0]*n for _ in

range

(m)]

for i in

range

(m):

for j in

range

(n):

ru=max(

0,i-k)

rd=min(i+k,m-1)

cl=max(

0,j-k)

cr=min(j+k,n-1)

print

(ru,cl,rd,cr)

answer[i]

[j]=dp[rd+1]

[cr+1]

-dp[rd+1]

[cl]

-dp[ru]

[cr+1]

+dp[ru]

[cl]

return answer

leetcode 131路徑總和

給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 先把題貼上來。這裡無非就是遞迴回溯然後找到輸出條件...

Leetcode131 分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b public list partition string s partition s,0 new arraylist res return res index...

LeetCode 131 分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 思路 回溯法 注意回溯的位置 class solution object def partition self,s type s str rtype list...