题目传送门
链接:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/
题干
题解
二重循环枚举,sum[i][j]表示子矩阵 [i, j] 的异或和
sum[i][j] = matrix[i][j] ^ sum[i - 1][j] ^ sum[i][j - 1] ^ sum[i - 1][j - 1]
最后再排序查找第k大的数字即可
Code
class Solution {
public:
int kthLargestValue(vector<vector<int>>& matrix, int k) {
int arr[1000005], m = matrix.size(), n = matrix[0].size();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (i > 0)
matrix[i][j] ^= matrix[i - 1][j];
if (j > 0)
matrix[i][j] ^= matrix[i][j - 1];
if (i * j > 0)
matrix[i][j] ^= matrix[i - 1][j - 1];
arr[i * n + j] = matrix[i][j];
}
}
sort(arr, arr + m * n);
return arr[m*n - k];
}
};