代码拉取完成,页面将自动刷新
# Time: O(m^2*n), m is min(r, c), n is max(r, c)
# Space: O(n), which doesn't include transposed space
import collections
class Solution(object):
def numSubmatrixSumTarget(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: int
"""
if len(matrix) > len(matrix[0]):
return self.numSubmatrixSumTarget(map(list, zip(*matrix)), target)
for i in xrange(len(matrix)):
for j in xrange(len(matrix[i])-1):
matrix[i][j+1] += matrix[i][j]
result = 0
for i in xrange(len(matrix)):
prefix_sum = [0]*len(matrix[i])
for j in xrange(i, len(matrix)):
lookup = collections.defaultdict(int)
lookup[0] = 1
for k in xrange(len(matrix[j])):
prefix_sum[k] += matrix[j][k]
if prefix_sum[k]-target in lookup:
result += lookup[prefix_sum[k]-target]
lookup[prefix_sum[k]] += 1
return result
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。