題目:
給你乙個 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...