标签:
Given an array of integers, every element appears twice except for one. Find that single one.
给出一组数据,每个元素出现两次,除了一个元素之外,找到那个出现一次的元素。
思路:
a^b=b^a 所以 假设 把所有相同的先进行异或
然后 出现多个0 ;
0与 那单个元素异或 ;
则 最后 剩下来那个 就是 single one。
C++:
1 class Solution { 2 public: 3 int singleNumber(int A[], int n) { 4 if(n==0||A==NULL) return 0; 5 6 int tmp=A[0]; 7 int i=0; 8 for(i=1;i<n;i++) 9 { 10 tmp=tmp^A[i]; 11 } 12 13 return tmp; 14 } 15 };
Python:
1 class Solution: 2 # @param A, a list of integer 3 # @return an integer 4 def singleNumber(self, A): 5 res=A[0] 6 for i in range(1,len(A)): 7 res=res^A[i] 8 return res
Python另一种方法:
def singleNumber(self, A): dict = {} for i in range(len(A)): if A[i] not in dict: dict[A[i]] = 1 else: dict[A[i]] += 1 for word in dict: if dict[word] == 1: return word
标签:
原文地址:http://www.cnblogs.com/jawiezhu/p/4391114.html