1.两数交换
- 两数交换 ( 时间O(n),空间O(1) )
// 1.两数交换(时间O(n),空间O(1)) // 前提:a,b所指向的存储位置不同,否则交换后的结果都为0 function exchange(a,b){ a = a ^ b; b = a ^ b; a = a ^ b; console.log(a,b); }
2.一个数组中只有一个数出现次数为奇数,其他次数都是偶数,找出这个数?
function findood(arr){ var eor = 0; for(var i=0;i<arr.length;i++){ eor ^= arr[i]; } console.log(eor); }
3.一个数组中只有两个数出现次数为奇数,其他次数都是偶数,找出这两个数?
function findtwoood(arr){ var eor = 0,twoood =0; for(var i = 0;i < arr.length;i++){ eor ^= arr[i]; } var rightOne = eor & (~eor + 1); //找出这两个数^运算最右位数为1的数 for(var j = 0;j < arr.length;j++){ if ((rightOne & arr[j]) === 0){ twoood ^= arr[j]; } } console.log(twoood,eor ^ twoood); }