class Solution {
public:
int maxCount(int m, int n, vector<vector<int>>& ops) {
}
};
598. 范围求和 II
给你一个 m x n
的矩阵 M
,初始化时所有的 0
和一个操作数组 op
,其中 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 * 104
0 <= ops.length <= 104
ops[i].length == 2
1 <= ai <= m
1 <= bi <= n
相似题目
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2.6 MB, 提交时间: 2025-02-02 09:48:40
impl Solution { pub fn max_count(m: i32, n: i32, ops: Vec<Vec<i32>>) -> i32 { let mut min_a = m; let mut min_b = n; for op in ops { min_a = min_a.min(op[0]); min_b = min_b.min(op[1]); } min_a * min_b } }
javascript 解法, 执行用时: 3 ms, 内存消耗: 52.2 MB, 提交时间: 2025-02-02 09:48:20
/** * @param {number} m * @param {number} n * @param {number[][]} ops * @return {number} */ var maxCount = function(m, n, ops) { let minA = m, minB = n; for (const [a, b] of ops) { minA = Math.min(minA, a); minB = Math.min(minB, b); } return minA * minB; };
cpp 解法, 执行用时: 0 ms, 内存消耗: 15.1 MB, 提交时间: 2025-02-02 09:48:02
class Solution { public: int maxCount(int m, int n, vector<vector<int>>& ops) { int min_a = m, min_b = n; for (auto& op : ops) { min_a = min(min_a, op[0]); min_b = min(min_b, op[1]); } return min_a * min_b; } };
java 解法, 执行用时: 0 ms, 内存消耗: 45.1 MB, 提交时间: 2025-02-02 09:47:50
class Solution { public int maxCount(int m, int n, int[][] ops) { int minA = m; int minB = n; for (int[] op : ops) { minA = Math.min(minA, op[0]); minB = Math.min(minB, op[1]); } return minA * minB; } }
python3 解法, 执行用时: 4 ms, 内存消耗: 19.1 MB, 提交时间: 2025-02-02 09:47:34
class Solution: def maxCount(self, m: int, n: int, ops: List[List[int]]) -> int: min_a = min((op[0] for op in ops), default=m) min_b = min((op[1] for op in ops), default=n) return min_a * min_b
golang 解法, 执行用时: 8 ms, 内存消耗: 3.7 MB, 提交时间: 2021-07-02 14:46:02
func maxCount(m int, n int, ops [][]int) int { x, y := m, n for _, op := range ops { x, y = min(op[0], x), min(op[1], y) } return x * y } func min(x, y int) int { if x > y { return y } return x }