1738. 找出第 K 大的异或坐标值
思路:根据异或运算的性质,可推出本题运用二位前缀和,同时我们可以通过使用优先队列来维护一个小顶堆。
class Solution {
public:
int kthLargestValue(vector<vector<int>>& matrix, int k) {
int n=matrix.size(),m=matrix[0].size();
int v[n+1][m+1];
memset(v,0,sizeof v);
priority_queue<int ,vector<int>,greater<int>> qu;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
v[i][j]=v[i-1][j]^v[i][j-1]^v[i-1][j-1]^matrix[i-1][j-1];
if(qu.size()<k){
qu.push(v[i][j]);
}else if(qu.top()<v[i][j]){
qu.push(v[i][j]);
qu.pop();
}
}
}
return qu.top();
}
};