class Solution {
public int maxCount(int m, int n, int[][] ops) {
int[][] originArr = new int[m][n];
// 遍历每一个操作数
for(int index = 0; index < ops.length;index ++){
int[] op = ops[index]; // 获取每一个操作数
int rows = op[0]; // 获取操作的行数
int columns = op[1]; // 获取操作的列数
// 根据操作数处理原数组
for(int row = 0;row < rows;row ++){
for(int column = 0;column < columns;column ++){
originArr[row][column]++;
}
}
}
int res = 0;
for(int i = 0;i < m;i ++){
for(int j = 0;j < n;j ++){
if(originArr[i][j] == originArr[0][0]){
res ++;
}
}
}
return res;
}
}
暴力法行不通,采用法二:
class Solution {
public int maxCount(int m, int n, int[][] ops) {
int minRow = m;
int minColumn = n;
for(int index = 0;index < ops.length;index ++){
int[] op = ops[index]; // 获取每个操作数
if(op[0] < minRow) minRow = op[0]; // 获取交集的行数
if(op[1] < minColumn) minColumn = op[1]; // 获取交集的列数
}
return minRow * minColumn;
}
}
求所有操作数中的交集的大小