问题:
难度: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];
}
}