问题描述
简要思路
经典前缀和。
先用 s[ ] 存储前缀异或和
再用 s1[ ] 进行排序。
代码
class Solution {
public:
int kthLargestValue(vector<vector<int>>& matrix, int k) {
int n = matrix.size(), m = matrix[0].size();
vector<vector<int>> s(n + 1, vector<int>(m + 1, 0));
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
s[i][j] = s[i-1][j] ^ s[i][j-1] ^ s[i-1][j-1] ^ matrix[i-1][j-1];
}
}
vector<int> s1;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
s1.push_back(s[i][j]);
}
}
sort(s1.begin(), s1.end());
return s1[n*m-k];
}
};