Skip to content

1738. Find Kth Largest XOR Coordinate Value

Description

You are given a 2D matrix of size m x n, consisting of non-negative integers. You are also given an integer k.

The value of coordinate (a, b) of the matrix is the XOR of all matrix[i][j] where 0 <= i <= a < m and 0 <= j <= b < n (0-indexed).

Find the kth largest value (1-indexed) of all the coordinates of matrix.

 

Example 1:

Input: matrix = [[5,2],[1,6]], k = 1
Output: 7
Explanation: The value of coordinate (0,1) is 5 XOR 2 = 7, which is the largest value.

Example 2:

Input: matrix = [[5,2],[1,6]], k = 2
Output: 5
Explanation: The value of coordinate (0,0) is 5 = 5, which is the 2nd largest value.

Example 3:

Input: matrix = [[5,2],[1,6]], k = 3
Output: 4
Explanation: The value of coordinate (1,0) is 5 XOR 1 = 4, which is the 3rd largest value.

 

Constraints:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 1000
  • 0 <= matrix[i][j] <= 106
  • 1 <= k <= m * n

 

Solutions

Solution: Dynamic Programming

  • Time complexity: O(mn)
  • Space complexity: O(mn)

 

JavaScript

js
/**
 * @param {number[][]} matrix
 * @param {number} k
 * @return {number}
 */
const kthLargestValue = function (matrix, k) {
  const m = matrix.length;
  const n = matrix[0].length;
  const dp = new Array(m + 1)
    .fill('')
    .map(_ => new Array(n + 1).fill(0));
  const result = [];

  for (let row = 1; row <= m; row++) {
    for (let col = 1; col <= n; col++) {
      dp[row][col] = dp[row - 1][col] ^ dp[row][col - 1] ^ dp[row - 1][col - 1] ^ matrix[row - 1][col - 1];

      result.push(dp[row][col]);
    }
  }
  result.sort((a, b) => b - a);
  return result[k - 1];
};

Released under the MIT license