https://leetcode.com/problems/maximum-xor-for-each-query/description/
给定一个单调增的长nnn数组AAA,再给定一个数m,1≤m≤20m,1\le m\le 20m,1≤m≤20,题目保证0≤A[i]<2m0\le A[i]<2^m0≤A[i]<2m。要求做若干次询问,每次询问求maxk<2m{A[0]∧...∧A[i]∧k}\max_{k<2^m}\{A[0]\wedge...\wedge A[i]\wedge k\}maxk<2m{A[0]∧...∧A[i]∧k},询问从i=n−1,n−2,...,0i=n-1,n-2,...,0i=n−1,n−2,...,0依次进行。求询问的结果。
最大值即为2m−12^m-12m−1,kkk可以直接求。代码如下:
class Solution {public:vector getMaximumXor(vector& nums, int m) {vector res;for (int i = 0, sum = 0; i < nums.size(); i++) {sum ^= nums[i];res.push_back(sum ^ (1 << m) - 1);}reverse(res.begin(), res.end());return res;}
};
时间复杂度O(n)O(n)O(n),空间O(1)O(1)O(1)。
上一篇:今年春天除了毛衣,这4组搭配好看又减龄 春天适合的4款时尚搭配 小个子早春搭配153毛衣宽松
下一篇:亮相釜山!国乒征战团体世乒赛,孙颖莎表态,马龙第八次参赛 釜山世乒赛许昕孙颖莎马龙丁宁 丁宁马龙孙颖莎世乒赛决赛