LeetCode 598. Range Addition II

598. Range Addition II

Descripition

Given an m * n matrix M initialized with all 0’s and several update operations.
Operations are represented by a 2D array, and each operation is represented by an array with two positive integers a and b, which means M[i][j] should be added by one for all 0 <= i < a and 0 <= j < b.
You need to count and return the number of maximum integers in the matrix after performing all the operations.

Example:

Input: 
m = 3, n = 3
operations = [[2,2],[3,3]]
Output: 4
Explanation: 
Initially, M = 
[[0, 0, 0],
 [0, 0, 0],
 [0, 0, 0]]

After performing [2,2], M = 
[[1, 1, 0],
 [1, 1, 0],
 [0, 0, 0]]

After performing [3,3], M = 
[[2, 2, 1],
 [2, 2, 1],
 [1, 1, 1]]

So the maximum integer in M is 2, and there are four of it in M. So return 4.

Solution

  • 题意即给一个初始化的数组(均为零),以及一些二元组,要求将二元组范围内的(见题目描述)数加一。最终返回最大数的数目。
  • 分析题目,我们可以发现,不论二元组是什么,总是从(0,0)开始累加,这就启发我们去找这些二元组的交集。交集内的数一定是最大数,我们可以获得二元组各个元素的最小值,结果便是这些最小值的乘积,代码如下。
class Solution {
public:
    long long maxCount(int m, int n, vector<vector<int>>& ops) {
        if (ops.size() == 0) return m * n;    //如果未给出二元组,那么返回原始数组的大小,因为0就是最大值。
        int min_row = ops[0][0],min_col = ops[0][1];
        for (int i = 1;i < ops.size();i++) {
            min_row = min(min_row,ops[i][0]);
            min_col = min(min_col,ops[i][1]);
        }
        return min_row * min_col;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值