image.png
var kthLargestValue = function(matrix, k) {
const m = matrix.length, n = matrix[0].length;
const pre = new Array(m + 1).fill(0).map(() => new Array(n + 1).fill(0));
const results = [];
for (let i = 1; i < m + 1; i++) {
for (let j = 1; j < n + 1; j++) {
pre[i][j] = pre[i - 1][j] ^ pre[i][j - 1] ^ pre[i - 1][j - 1] ^ matrix[i - 1][j - 1];
results.push(pre[i][j]);
}
}
results.sort((a, b) => b - a);
return results[k - 1];
}
感觉异或运算99%的题目套路都是前缀和,这道题由一维前缀和扩展到了二维前缀和,因此公式也相应的扩展,对于一个前缀和二维数组p有
p[i][j] = p[i-1][j] ^ p[i][j-1] ^ p[i-1][j-1] ^ matrix[i][j]
别的没啥说的,直接求解