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和最后孤单的值,成为孤单值本身