元素和小于等于k的子矩阵的数目
元素和小于等于 k 的子矩阵的数目1
题目讲解
容斥原理
prefix[a][b] 表示从左上角 (0,0) 到 (a-1,b-1) 的矩形和.
$$
prefix[i-1][j] = \sum_{x=0}^{i-2} \sum_{y=0}^{j-1} grid[x][y]
$$
具体流程
代码
c++
python
java
class Solution:
def countSubmatrices(self, grid, k):
m, n = len(grid), len(grid[0])
# 初始化一个 二维数组(矩阵),用来存储前缀和.
prefix = [[0] * (n + 1) for _ in range(m + 1)]
res = 0
for i in range(1, m + 1):
for j in range(1, n + 1):
prefix[i][j] = (grid[i-1][j-1] +
prefix[i-1][j] +
prefix[i][j-1] -
prefix[i-1][j-1])
if prefix[i][j] <= k:
res += 1
return res