滴滴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

相关推荐

06-25 16:00
武汉大学 Java
工科研究生底薪工资就开3k啊??
机械打工仔:写文章提成的岗位工资低,你怪工科?
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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