只出现一次的数字

题目是这样的:数组中只有一个数是单个出现的的,其他都是成对出现的,形如 [4,1,2,1,2] ,现在是求出这个单个出现的数字

编程语言选的是javascript,采用的逻辑运算中的异或运算,相同的两个值进行异或运算结果为0,0异或任何数=任何数 

这里写个函数实现吧!

function find (nums) {
  let num = 0;
  for (let i=0;i<nums.length;i++) {
   num = num ^ nums[i]
 }    
 return num
}

let nums = [4,1,2,1,2];
let res = find(nums);
console.log('result: ',res)

这里的num等于数组中每个元素进行异或运算得到的最后结果,0^4^1^2^1^2 变换下结构 0^4^1^1^2^2,因为1^1 = 0,2^2 = 0,最后剩了0^4,而0异或任何数 = 任何数,所以结果为4

posted @ 2019-03-14 18:52  刘小鑫  阅读(60)  评论(0)    收藏  举报