1738. 找出第 K 大的异或坐标值(异或运算)

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]
别的没啥说的,直接求解

你可能感兴趣的:(1738. 找出第 K 大的异或坐标值(异或运算))