【数组篇】598. 区间加法 II
【摘要】 598. 区间加法 II。给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= y < bi 时, M[x][y] 应该加 1。在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。示例 1:输入: m = 3, n = 3,ops = [[2,2],[3...
598. 区间加法 II。
给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= y < bi 时, M[x][y] 应该加 1。
在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。
示例 1:
输入: m = 3, n = 3,ops = [[2,2],[3,3]]
输出: 4
解释: M 中最大的整数是 2, 而且 M 中有4个值为2的元素。因此返回 4。
示例 2:
输入: m = 3, n = 3, ops = [[2,2],[3,3],[3,3],[3,3],[2,2],[3,3],[3,3],[3,3],[2,2],[3,3],[3,3],[3,3]]
输出: 4
示例 3:
输入: m = 3, n = 3, ops = []
输出: 9
提示:
1 <= m, n <= 4 * 10^4
0 <= ops.length <= 10^4
ops[i].length == 2
1 <= ai <= m
1 <= bi <= n
算法分析
解题思路
遍历即可
class Solution {
public int maxCount(int m, int n, int[][] ops) {
// 1.暴力破解
// int[][] ans = new int[m][n];
// for (int[] op : ops) {
// for (int i = 0; i < op[0]; i++) {
// for (int j = 0; j < op[1]; j++) {
// ans[i][j] += 1;
// }
// }
// }
// int count = 0;
// for (int i = 0; i < ans.length; i++) {
// for (int j = 0; j < ans[i].length; j++) {
// if (ans[i][j] == ans[0][0]) {
// count++;
// }
// }
// }
// return count;
// 2.一遍遍历
for (int[] op : ops) {
m = Math.min(m, op[0]);
n = Math.min(n, op[1]);
}
return m * n;
}
}
复杂性分析
时间复杂度:O(n)
空间复杂度:O(1)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)