51Node 2106 一个奇数次

原创 2018年04月17日 00:31:32
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
 收藏
 取消关注
输入一个长度为n的数组,考虑所有不同的数字,有且只有一个数字出现了奇数次。
比如对于1 2 3 1 2 3 1,我们考虑所有不同的数字1 2 3,有且只有1出现了奇数次(3次)
输出这个出现了奇数次的数字。
1 <= n <= 100000
1 <= a[i] <= 10^9
Input
第一行一个整数n,
接下来一行n个整数,表示输入的数字。
Output
一行一个数字,表示出现了奇数次的数字。
Input示例
7
1 2 3 1 2 3 1
Output示例

1


异或运算的基本性质

1. a ⊕ a = 0 ******
2. a ⊕ b = b ⊕ a
3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
5. a ⊕ b ⊕ a = b.*****1和5可得,0异或一个数为这个数本身

因为只有一个数出现奇次,所以所有的数都异或即可。a异或a=0,0异或a=a;

所以所有的数异或出的结果,一定是要求的!!!


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int n,a=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        int num;
        scanf("%d",&num);
        a^=num;
    }
    printf("%d\n",a);
    return 0;
}

【面试题】数组中有两个元素出现了奇数次,其他元素出现了偶数次。找出这两个元素

数组中有两个元素出现了奇数次,其他元素出现了偶数次。找出这两个元素。 把原数组分为两个子数组。在每个子数组中,包含一个只出现一次的数字,而其他数字都出现两次。如果能够这样拆分原数组,按照前面的办法就...
  • bxyill
  • bxyill
  • 2013-03-09 09:14:28
  • 2923

有N个数,其中2个数出现了奇数次(这两个数不相等),其他数都出现偶数次,问用O(1)的空间复杂度,找出这两个数,不需要知道具体位置,只需要知道这两个值。

/* This finction sets the values of *x and *y to nonr-epeating elements in an array arr[] of size n...
  • u010590166
  • u010590166
  • 2013-12-21 17:02:53
  • 1110

spoj10606 数位dp (求出现的数字,所有偶数出现奇数次,所有奇数出现偶数次)

http://www.spoj.com/problems/BALNUM/ SPOJ Problem Set (classical) 10606. Balanced Number...
  • u013573047
  • u013573047
  • 2015-02-24 11:41:10
  • 1096

找出现奇数次的两个数

一个数组中,有两个数出现了奇数次,其余的数都出现偶数次,找出这两个数。 用异或操作可在O(n)时间复杂度和O(1)空间复杂度内找到。     设要找的两个数为A和B,第一步让所有的数异或,结果就是...
  • slowdreamer
  • slowdreamer
  • 2016-07-24 22:14:12
  • 463

【刷题之路】寻找奇数次出现的数2

给定一个整型数组arr,其中有两个数出现了奇数次,其他的数都出现了偶数次,找到这两个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。 给定一个整形数组arr及它的大小n,请返回一个数组,...
  • zyn2609530
  • zyn2609530
  • 2016-06-01 21:28:31
  • 195

给出N个正整数,其中只有一个数出现了奇数次,其余的数都出现偶数次。求那个出现了奇数次的数。1<=N<=1000,N肯定是奇数。所有出现的整数都不超过1000。

给出N个正整数,其中只有一个数出现了奇数次,其余的数都出现偶数次。求那个出现了奇数次的数。1...
  • kangkanglou
  • kangkanglou
  • 2010-07-03 14:09:00
  • 3362

互联网面试题:一个数组中找出三个出现奇数次的数字中的一个

2、异形数(25分) 在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字,程序时间和空间复杂度越小越好。 例如: a ={1,3,...
  • bxyill
  • bxyill
  • 2013-05-24 10:09:56
  • 3570

在其它数都出现偶数次的数组中寻找出现奇数次的数

通过位运算,寻找出现出现奇数次的数
  • bbb695480667
  • bbb695480667
  • 2017-05-10 14:07:56
  • 324

【算法题】找出且仅有的出现了奇数次的一个数

题目给你n个数,其中有且仅有一个数出现了奇数次,其余的数都出现了偶数次。用线性时间常数空间找出出现了奇数次的那一个数。解题思路关键字:异或从头到尾异或一遍,最后得到的那个数就是出现了奇数次的数。因为,...
  • xn_28
  • xn_28
  • 2016-09-19 05:00:00
  • 412

找出出现奇数次的数

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601611.html 题目: 给你n个数,其中有且仅有一个数出现了奇数次...
  • lqglqglqg
  • lqglqglqg
  • 2015-08-17 21:20:37
  • 425
收藏助手
不良信息举报
您举报文章:51Node 2106 一个奇数次
举报原因:
原因补充:

(最多只允许输入30个字)