列表

详情


598. 范围求和 II

给你一个 m x n 的矩阵 M ,初始化时所有的 0 和一个操作数组 op ,其中 ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai0 <= 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

 

提示:

相似题目

区间加法

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int maxCount(int m, int n, vector<vector<int>>& ops) { } };

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
}

上一题