8.11贝壳找房,第三题

题目:求最大子数组异或和的最小长度
解答:前缀异或和,n方解法,只过了20%,求解答。
#贝壳找房##笔试题目#
全部评论
dp
1 回复 分享
发布于 2020-08-12 09:23
#include<bits/stdc++.h> using namespace std; /* O(n) */ void add(int cnt[],int num,int& count){     int i=0;     while(num){         if(num&1){//如果该数字当前位为1             cnt[i]++;             if(cnt[i]==1)                 count++;         }         num>>=1;     } } void sub(int cnt[],int num,int& count){     int i=0;     while(num){         if(num&1){             cnt[i]--;             if(cnt[i]==0) count--;         }         num>>=1;     } } int main() {     int n;     cin>>n;     vector<int> nums(n,0);     int maxVal=0;     int res=n;     int cnt[32]={0};//统计每一位1出现的次数     int w[32]={0};//统计窗口中每一位上1出现的次数     int count=0;     int tmp=0;     for(int i=0; i<n; i++)     {         cin>>nums[i];         maxVal|=nums[i];         add(cnt,nums[i],count);     }     int left=0,right=0;     while(right<n)     {         add(w,nums[right++],tmp);         while(tmp==count){             res=min(res,right-left);             sub(w,nums[left++],tmp);         }     }     cout<<res<<endl;     return 0; }
点赞 回复 分享
发布于 2020-08-12 14:12
是或
点赞 回复 分享
发布于 2020-08-11 22:35

相关推荐

程序员饺子:正常 我沟通了200多个 15个要简历 面试2个 全投的成都的小厂。很多看我是27直接不会了😅
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务