首页 > 试题广场 >

寻找奇数

[编程题]寻找奇数
  • 热度指数:8664 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。

数据范围:

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


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

输入

5
2 1 2 3 1

输出

3
示例2

输入

1
1

输出

1
n = int(input().strip())
array = list( map(int, input().strip().split()) )
ans = 0
for a in array:
    ans ^= a
print(ans)
XOR算法。
a^b: 按位异或运算,即当二进制位相同时结果为0,反之为1。例如1^2 =3,(01)^(10)=(11)。异或运算可以过滤掉成双成对的数字,剩下那个“孤独”的单身数。
发表于 2020-05-07 02:14:11 回复(0)
n=int(input())
m=list(map(int,input().split()))
pre=0
for i in m:
    #因为相同的会异或为0,剩下的就是不相同的,可以用来过滤出那个出现奇数次的
    pre^=i
print(pre)
采用异或的方法,可以用来过滤出现奇数次的那个数
发表于 2020-04-21 18:56:03 回复(0)
import collections  def f(s):
    a=collections.Counter(s)  for i in a.keys():  if a[i]%2==1:  return i  if __name__=="__main__":
    s1=int(input())
    s2=list(map(int,input().strip().split(" ")))  print(f(s2))

发表于 2019-09-03 22:03:39 回复(0)