2023.12.14每日一题
2023-12-16 10:15:59
2023.12.14
题目来源
我的题解
哈哈哈哈!!!我不会,借鉴一下官方题解
二维前缀和+二维差分
- 求二维前缀和,用于判断快速判断右下角固定范围内不存在被占据的格子,而都是空格子。
- 二维差分,用于快速判断每个空格子都被邮票覆盖。
时间复杂度:O(mn)
空间复杂度:O(mn)
class Solution {
public boolean possibleToStamp(int[][] grid, int stampHeight, int stampWidth) {
int m = grid.length, n = grid[0].length;
int[][] sum = new int[m + 2][n + 2];
int[][] diff = new int[m + 2][n + 2];
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + grid[i - 1][j - 1];
}
}
for (int i = 1; i + stampHeight - 1 <= m; i++) {
for (int j = 1; j + stampWidth - 1 <= n; j++) {
int x = i + stampHeight - 1;
int y = j + stampWidth - 1;
if (sum[x][y] - sum[x][j - 1] - sum[i - 1][y] + sum[i - 1][j - 1] == 0) {
diff[i][j]++;
diff[i][y + 1]--;
diff[x + 1][j]--;
diff[x + 1][y + 1]++;
}
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
diff[i][j] += diff[i - 1][j] + diff[i][j - 1] - diff[i - 1][j - 1];
if (diff[i][j] == 0 && grid[i - 1][j - 1] == 0) {
return false;
}
}
}
return true;
}
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~
文章来源:https://blog.csdn.net/weixin_42075274/article/details/135019768
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!