class Solution:
def getMaxMatrix(self, matrix: List[List[int]]) -> List[int]:
ans = [0,0,0,0]
N = len(matrix)
M = len(matrix[0])
res = float('-inf')
# 上边为i,下边为j,列使用k进行遍历
for i in range(0,N):
# b计算每列的和,所以每次上边变化,都需要重置
b = [0] * M
for j in range(i,N):
# 统计当前的最大和【类似一维最大子序和】
cur_sum = 0
for k in range(0,M):
b[k] += matrix[j][k]
if cur_sum > 0:
cur_sum += b[k]
else:
# 另立门户
cur_sum = b[k]
# 保存左上角
r1 = i
c1 = k
if cur_sum > res:
res = cur_sum
ans[0] = r1
ans[1] = c1
ans[2] = j
ans[3] = k
return ans
每日一道Leetcode - 面试题 17.24. 最大子矩阵【动态规划】
最新推荐文章于 2021-11-28 22:09:40 发布