[Leetcode学习-java]Range Addition II

问题:

难度:easy

说明:

计算范围累加最大值的个数,题目给出 m,n 指定一个矩形的 int[m][n],然后给出一个坐标数组指定每一个 [0,0] - 每一个坐标 需要 +1 的面积,计算出 +1 结束后,最大值的格子数量。

题目连接:Loading...

输入范围:

  • 1 <= m, n <= 4 * 104
  • 0 <= ops.length <= 104
  • ops[i].length == 2
  • 1 <= ai <= m
  • 1 <= bi <= n

输入案例:

Input: m = 3, n = 3, ops = [[2,2],[3,3]]
Output: 4
Explanation: The maximum integer in M is 2, and there are four of it in M. So return 4.

我的代码:

可以不用画二维数组来弄,因为每一个 ops 指定的坐标,都是 [0,0] ~ ops[i][ops-x, ops-y] ,首先判断 0,0 这个格子绝对是存放了最大值,然后再求出所有 ops 的公共交点[ops-xx, ops-yy],然后计算ops-xx * ops-yy 就得出最大值数量。公共交点当然就是 x y 的最小值啦。

Java:

class Solution {
    public int maxCount(int m, int n, int[][] ops) {
        int inter[] = new int[]{m, n}; // 需要初始化 m n 以防 ops.length = 0
        for(int[] op : ops) {
            if(op[0] < inter[0]) inter[0] = op[0]; // 直接拿最小值
            if(op[1] < inter[1]) inter[1] = op[1];
        }
        return inter[0] * inter[1];
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值