Lonely Integer

https://www.hackerrank.com/challenges/lonely-integer

 1 def main():
 2     n = int(raw_input())
 3     s = dict()
 4     a = 0
 5 
 6     arr = map(int,raw_input().strip().split())
 7     for _ in range(n):
 8         num = arr[_]
 9         if not s.get(num):
10             s.update({num:1})
11         else:
12             a = s.get(num)
13             a += 1
14             s.update({num:a})
15 
16     for i in s:
17         if s.get(i) % 2 != 0:
18             print i
19             break
20 
21 main()

 

学习  

  怎样利用新的数据结构“字典”来解决问题

 

 

//另一个方式:过滤

1 #!/usr/bin/py
2 def lonelyinteger(a):
3     answer = 0
4     answer = reduce(lambda x,y: x^y, a)
5     return answer
6 if __name__ == '__main__':
7     a = input()
8     b = map(int, raw_input().strip().split(" "))
9     print lonelyinteger(b)

学习 

  http://jeffxie.blog.51cto.com/1365360/328207 三个过滤函数

  神奇的xor运算

    异或运算有两个特性:

    1、一个数异或本身恒等于0,如5^5恒等于0;

    2、一个数异或0恒等于本身,如5^0恒等于5。

 

    所以比如  print 0 ^ 0 ^ 1 ^ 2 ^ 1

    根据结合律,所有相同的都消除为0,而0和最后孤单的值,成为孤单值本身 

转载于:https://www.cnblogs.com/sangocare/p/4489678.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值