其他分享
首页 > 其他分享> > LeetCode 598. 范围求和 II

LeetCode 598. 范围求和 II

作者:互联网

题目要求

 

例子

 

 

思路

    正常来说,肯定是定义一个二维数组,然后每次取出一对操作数进行操作,最后进行统计。但是!开一个行列都是一万以上的二维数组消耗实在太大了,于是需要想想别的办法。

    题目要求统计操作结束后,矩阵中有多少个最大元素。这里会发现——不管操作是什么,(0,0)这个点是一直被包括的。因此(0,0)一定是一个最大值,那么题目就变成了最后有几个跟(0,0)位置相等的元素。

 要想和(0,0)处元素相等,那么一次操作都不能少。每次对行的操作数为ops[i][0],对列的操作数为ops[i][1]。因此每次修改行数m为 m和行操作数的最小值,修改列数n为 n和列操作数的最小值,最终最大元素的个数为 m*n 个,因为这m*n个都经历过操作了

 

代码

 

class Solution {
public:
    int maxCount(int m, int n, vector<vector<int>>& ops) {
        for(int i=0;i<ops.size();i++){
            m = min(m,ops[i][0]);
            n = min(n,ops[i][1]);
        }
        return m*n;
    }
};

 

 

 

 

 

标签:操作数,题目,ops,int,598,元素,II,操作,LeetCode
来源: https://www.cnblogs.com/Acc222222/p/15521349.html