欢迎光临
我们一直在努力

每日力扣习题014-元素和小于等于 k 的子矩阵的数目

元素和小于等于 k 的子矩阵的数目

解读:

给一个非负数元素组成的矩阵,返回包含左上角元素,元素和小于或等于k的子矩阵。

思路:

第一时间仍然是线性思维,我感觉可以先看第一行元素能取到哪里i,再看第一列元素能取到哪里j,然后再在ixj的矩阵里面暴力解,然后想了一下在ixj矩阵里面怎么找到所有的矩阵,感觉步骤和直接从原始矩阵找符合条件的都一样了,所以选择从原始矩阵直接遍历。

从[0,0]的元素开始,按照列优先的顺序遍历矩阵,将当前位置视为子矩阵右下角,创建一个数组nums[i],保存当前列之前第i行所有元素的和,在遍历到第j列时,按照行从上到下遍历i,累加之后,如果当前值<=k,则number++。

class Solution {
public int countSubmatrices(int[][] grid, int k) {
int [] nums = new int[grid.length];
int number = 0;
for(int w = 0;w<grid[0].length;w++){
int rows = 0;
for(int h = 0;h<grid.length;h++){
nums[h] += grid[h][w];
rows += nums[h];
if(rows<=k){
number++;
}
}
}
return number;
}
}

欢迎评论区友好讨论

赞(0)
未经允许不得转载:171主机测评 » 每日力扣习题014-元素和小于等于 k 的子矩阵的数目
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址