class Solution:
def getMaxMatrix(self, matrix: List[List[int]]) -> List[int]:
N = len(matrix)
M = len(matrix[0])
# 初始化一维数组
b = [0] * M
max_res = float("-inf")
ans = [0]*4
for i in range(N):
# 每行向下扩展遍历的时候先要将b数组初始化为0
for k in range(M):
b[k] = 0
# 扩展到j行,一次将每列元素相加
for j in range(i,N):
cur_sum = 0
for k in range(M):
b[k] += matrix[j][k]
# 看当前行遍历的每列的值是否最大,最大就是当前情况的最大子矩阵
if cur_sum <= 0:
# 前面是负数了,所以要另立门户
cur_sum = b[k]
c1 = k
else:
cur_sum += b[k]
# 找到比之前大的子矩阵
if cur_sum > max_res:
max_res = cur_sum
ans[0] = i
ans[1] = c1
ans[2] = j
ans[3] = k
return ans
09-15
496
04-21
2704