滴滴xor(nlogn)的还有一个O(N)的

思路是xor有性质a ^ b ^b =a;
所以统计前缀和是否出现过
 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map <int, bool> mp;
int n, t, q, ans;
int main() {
    ans = 0;
    scanf("%d", &n);
    mp[0] = true;
    while (n--) {
        scanf("%d", &t);
        q ^= t;
        if (mp.count(q)) {
            q = 0;
            mp.clear();
            mp[0] = true;
            ans ++;
        } else {
            mp[q] = true;
        }
    }
    printf("%d\n", ans);
    return 0;
} 
O(n)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool mp[100001];
queue <int> que;
int n, t, q, ans;
int main() {
    ans = 0;
    scanf("%d", &n);
    memset(mp, 0, sizeof mp);
    mp[0] = true;
    while (n--) {
        scanf("%d", &t);
        q ^= t;
        if (mp[q]) {
            q = 0;
            while (!que.empty()) {
                mp[que.front()] = false;
                que.pop();
            }
            ans ++;
        } else {
            que.push(q);
            mp[q] = true;
        }
    }
    printf("%d\n", ans);
    return 0;
}
全部评论
mx大佬。我来啦😁
点赞 回复 分享
发布于 2017-09-10 18:59
我试了试如下输入, 5 3 0 1 2 4 4 输出 : 1 其实应该输出2 才对, [0] [4 4] 难道是我题意理解错了?
点赞 回复 分享
发布于 2017-09-10 18:52
先马克一发
点赞 回复 分享
发布于 2017-09-10 18:47
666
点赞 回复 分享
发布于 2017-09-10 18:34
跪求大佬解释,什么意思??
点赞 回复 分享
发布于 2017-09-10 17:16
大佬,能分享一下思路吗?
点赞 回复 分享
发布于 2017-09-10 17:14
#include<bits/stdc++.h> 学到了。。我都是include一堆
点赞 回复 分享
发布于 2017-09-10 17:10
666
点赞 回复 分享
发布于 2017-09-10 17:09
大佬,能解释一下解法吗
点赞 回复 分享
发布于 2017-09-10 17:08
有代码思路吗??大佬
点赞 回复 分享
发布于 2017-09-10 17:07
大佬,能说一说题意,以及注意事项?
点赞 回复 分享
发布于 2017-09-10 17:05
果然一个个都是大神啊
点赞 回复 分享
发布于 2017-09-10 17:04

相关推荐

野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
面试吐槽bot
点赞 评论 收藏
分享
把实习生当正职使昨天第一天就加班,晚上连口饭都没吃上,以后日子咋过,我不想干了
码农索隆:实习不怕忙,就怕干的活重复且没难度,要干就干那种有深度有难度的任务,这样才能快速的提升
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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