标签:
摘抄自http://www.cnblogs.com/springfor/p/3870801.html
“
这道题运用位运算的异或。异或是相同为0,不同为1。所以对所有数进行异或,得出的那个数就是single number。初始时先让一个数与0异或,然后再对剩下读数挨个进行异或。
这里运用到异或的性质:对于任何数x,都有x^x=0,x^0=x
”
public class Solution { public int singleNumber(int[] nums) { // 还是乖乖学习一下异或吧 if(nums.length==1)return nums[0]; int res = 0; for(int i=0;i<nums.length;i++){ res ^= nums[i]; } return res; } }
hash 法,引用别人说法“如果A[i]不在hash table中,则插入,如果已经在,则在hash table中删除,最后table中剩下的就是要找的数。但排序法事件复杂度是O(nlogn),而hash table尽管是O(n)事件复杂度,需要o(n)的extra memory。”
标签:
原文地址:http://www.cnblogs.com/jiajiaxingxing/p/4450018.html