首页 > 试题广场 > 寻找奇数
[编程题]寻找奇数
现在有一个长度为n的正整数序列,其中只有【一种】数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。

输入描述:
第一行:一个整数n,表示序列的长度。第二行:n个正整数ai,两个数中间以空格隔开。


输出描述:
一个数,即在序列中唯一出现奇数次的数值。
示例1

输入

5
2 1 2 3 1

输出

3

XOR的简单应用

#include <bits/stdc++.h>
using namespace std;
int n, x, ans;
int main() {
    ios::sync_with_stdio(false);
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> x;
        ans ^= x;
    }
    cout << ans;
}

编辑于 2019-07-20 08:05:38 回复(0)
//运行时间:211ms
//占用内存:612k
#include <iostream>
using namespace std;

int main()
{
    int n = 0;
    int num;
    unsigned int sum = 0;
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n;
    for(int i = 0; i < n; ++i){
        cin >> num;
        sum ^= num;
    }
    cout << sum;
    return 0;
}

编辑于 2019-08-01 13:24:55 回复(0)
py异或有点慢
n = int(input())
res = list(map(int, input().split()))
num = 0
for i in res:
    num = num^i
print(num)


发表于 2019-08-09 23:13:10 回复(2)
n = int(input().strip())
nums = list(map(int, input().strip().split()))

ans = nums[0]

for i in range(1, len(nums)):
    ans = ans ^ nums[i]
print(ans)

发表于 2019-08-01 00:21:13 回复(0)
剑指offer原题变种,但注意同样的算法使用C语言能过,但是Java会超时!
发表于 2019-07-25 22:14:41 回复(0)
import java.util.*;
 public class Main {
     public static void main(String[] args){
        Scanner sc= new Scanner(System.in);
        int m=sc.nextInt();
        int num=0;
        for(int i=0;i<m;i++)
            num=num^sc.nextInt();
        System.out.println(num);
     }    
 }
超时了~~~哭
发表于 2019-07-23 20:29:06 回复(1)

问题信息

上传者:小小
难度:
6条回答 729浏览

热门推荐

通过挑战的用户

查看代码