LeetCode 题解工作台
找出第 K 大的异或坐标值
给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 目标值 可以通过对所有元素 matrix[i][j] 执行异或运算得到,其中 i 和 j 满足 0 且 0 ( 下标从 0 开始计数 )。 请你找出 matrix 的所有坐标中第…
8
题型
5
代码语言
3
相关题
当前训练重点
中等 · 堆
答案摘要
我们定义一个二维前缀异或数组 ,其中 表示矩阵前 行和前 列的元素异或运算的结果,即: $$
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 堆 题型思路
题目描述
给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。
矩阵中坐标 (a, b) 的 目标值 可以通过对所有元素 matrix[i][j] 执行异或运算得到,其中 i 和 j 满足 0 <= i <= a < m 且 0 <= j <= b < n(下标从 0 开始计数)。
请你找出 matrix 的所有坐标中第 k 大的目标值(k 的值从 1 开始计数)。
示例 1:
输入:matrix = [[5,2],[1,6]], k = 1 输出:7 解释:坐标 (0,1) 的目标值是 5 XOR 2 = 7 ,为最大的目标值。
示例 2:
输入:matrix = [[5,2],[1,6]], k = 2 输出:5 解释:坐标 (0,0) 的目标值是 5 = 5 ,为第 2 大的目标值。
示例 3:
输入:matrix = [[5,2],[1,6]], k = 3 输出:4 解释:坐标 (1,0) 的目标值是 5 XOR 1 = 4 ,为第 3 大的目标值。
示例 4:
输入:matrix = [[5,2],[1,6]], k = 4 输出:0 解释:坐标 (1,1) 的目标值是 5 XOR 2 XOR 1 XOR 6 = 0 ,为第 4 大的目标值。
提示:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 10000 <= matrix[i][j] <= 1061 <= k <= m * n
解题思路
方法一:二维前缀异或 + 排序或快速选择
我们定义一个二维前缀异或数组 ,其中 表示矩阵前 行和前 列的元素异或运算的结果,即:
而 可以由 , 和 三个元素计算得到,即:
我们遍历矩阵,计算出所有的 ,然后将其排序,最后返回第 大的元素即可。如果不想使用排序,也可以使用快速选择算法,这样可以优化时间复杂度。
时间复杂度 或 ,空间复杂度 。其中 和 分别是矩阵的行数和列数。
class Solution:
def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:
m, n = len(matrix), len(matrix[0])
s = [[0] * (n + 1) for _ in range(m + 1)]
ans = []
for i in range(m):
for j in range(n):
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j]
ans.append(s[i + 1][j + 1])
return nlargest(k, ans)[-1]
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | complexity is O(m _n) for building the prefix XOR matrix plus O(m_ n) for flattening and O(k log (m _n)) for heap selection, or O(m_ n) for quickselect. Space complexity is O(m _n) for the prefix matrix and O(m_ n) for storing coordinate values before selection. |
| 空间 | Depends on the final approach |
面试官常问的追问
外企场景- question_mark
Ask about reducing redundant XOR calculations for each coordinate.
- question_mark
Probe whether candidate can apply 2D prefix sums correctly to XOR instead of sum.
- question_mark
Check if candidate optimizes selection using heap or quickselect for kth largest.
常见陷阱
外企场景- error
Recomputing XOR for each coordinate without prefix array, causing TLE on large matrices.
- error
Incorrect prefix XOR relation leading to wrong values in certain coordinates.
- error
Sorting the entire list instead of using selection methods, wasting time and memory.
进阶变体
外企场景- arrow_right_alt
Find kth smallest XOR coordinate instead of largest, requiring reversed selection logic.
- arrow_right_alt
Compute XOR sums for submatrices of arbitrary size rather than from (0,0).
- arrow_right_alt
Combine with dynamic updates where matrix elements change and kth largest must be recalculated efficiently.