解法一:
class Solution {
/*public int maxCount(int m, int n, int[][] ops) {
int[][] matrix = new int[m][n];
int max = 0;
for(int i = 0; i < ops.length; i++){
int a = ops[i][0];
int b = ops[i][1];
//System.out.println("a:" + a + " b:" + b);
for(int j = 0; j < m && j < a; j++){
for(int k = 0; k < n && k < b; k++){
//System.out.println("i:" + i + " j:" + j + " k:" + k);
matrix[j][k]++;
max = Math.max(max, matrix[j][k]);
}
}
}
//统计有多少个max
int count = 0;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
//System.out.print(matrix[i][j] + " ");
if(matrix[i][j] == max){
count++;
}
}
//System.out.println();
}
return count;
}*/
//不能向上面那样一直去遍历矩阵,数量过大时会造成超时
//operations = [[2,2],[3,3]],归根到底改变的还是某一行,某一列,最大的元素肯定是每次都被操作到了的
//比如第一行第一列的元素,肯定每次都被操作到了,所以只要求ops中行和列的交集
public int maxCount(int m, int n, int[][] ops) {
int row = m;
int col = n;
for(int i = 0; i < ops.length; i++){
row = Math.min(row, ops[i][0]);
col = Math.min(col, ops[i][1]);
}
return row*col;
}
}