LC.1738. 找出第 K 大的异或坐标值

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC.1738. 找出第 K 大的异或坐标值相关的知识,希望对你有一定的参考价值。

LC.1738. 找出第 K 大的异或坐标值

维护二维区前缀和地推即可。

至于找第 k k k大,排序搞,或者利用快速选择算法。

S T L STL STL自带了一个 n t h _ e l e m e n t ( f i r s t , p o s , e n d ) nth\\_element(first,pos,end) nth_element(first,pos,end)

该算法复杂度是 O ( n ) O(n) O(n)的,最坏是 O ( n 2 ) O(n^2) O(n2)

所以基于该算法的总时间复杂度: O ( m n ) O(mn) O(mn)

code(快速选择)

class Solution {
public:
    int kthLargestValue(vector<vector<int>>& a, int k) {
        int n=a.size(),m=a[0].size();
        vector<vector<int> >b(n,vector<int>(m,0));
        vector<int>ans;
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++){
                int x=a[i][j];
                if(i-1>=0) x^=b[i-1][j];
                if(j-1>=0) x^=b[i][j-1];
                if(i>=1&&j>=1) x^=b[i-1][j-1];
                b[i][j]=x;
                ans.push_back(x);
            }
        nth_element(ans.begin(),ans.begin()+k-1,ans.end(),greater<int>());
        return ans[k-1];
    }
};

本题的思想就是 异或运算和相加运算 都具有前缀和性质。

以上是关于LC.1738. 找出第 K 大的异或坐标值的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-1738-找出第k大的异或坐标值

1738. 找出第 K 大的异或坐标值

leetcode 1738. 找出第 K 大的异或坐标值

leetcode 1738. 找出第 K 大的异或坐标值

leetcode1738. 找出第 K 大的异或坐标值

LeetCode 1738. 找出第 K 大的异或坐标值(Java动态规划)