今天的比较简单,先获取异或后的数组,然后找到对应的第k大的数即可。双84.85%
有点神奇 哈哈哈
代码
class Solution {
public int kthLargestValue(int[][] matrix, int k) {
int col = matrix[0].length;
int row = matrix.length;
// System.out.println(w+" "+h);
int [][] res = new int[row][col];
res[0][0] = matrix[0][0];
int [] a = new int[row*col];
int a_index = 1;
a[0] = res[0][0];
//处理边界
for(int i=1;i<col;i++){
res[0][i] = res[0][i-1] ^ matrix[0][i];
a[a_index] = res[0][i];
a_index++;
}
for(int j=1;j<row;j++){
res[j][0] = res[j-1][0] ^ matrix[j][0];
a[a_index] = res[j][0];
a_index++;
}
//获取完整的异或后的矩阵
for(int i=1;i<row;i++)
for(int j=1;j<col;j++){
res[i][j] = res[i-1][j-1] ^ res[i-1][j] ^ res[i][j-1] ^ matrix[i][j];
a[a_index] = res[i][j];
a_index++;
}
Arrays.sort(a);
return a[row*col-k];
}
}