关于这个算法,我上网学习了一下,然后写了个java的,写了个js的,我找了很多遍,逻辑是一样的,但是为什么java的可以跑得通,js的就不行呢?
java:
public class Solution {
public int[] singleNumber(int[] nums) {
int len = nums.length;
int AxorB = 0;
for(int i=0; i<len; i++){
AxorB ^= nums[i];
}
int mask = AxorB & (~(AxorB-1));
int A = 0;
int B = 0;
for(int i=0; i<len; i++){
if((mask&nums[i])==0){
A ^= nums[i];
}else{
B ^= nums[i];
}
}
return new int[]{A,B};
}
}
js:
/**
* @param {number[]} nums
* @return {number[]}
*/
var singleNumber = function(nums) {
var len=nums.length;
var yh=0;
for(var i=0;i<len;i++){
yh ^= nums[i];
}
var mask = yh & (~(yh-1));
var a = 0;
var b = 0;
for(var j=0;j<len;j++){
if(mask&nums[j]===0){
a ^=nums[j];
} else{
b ^=nums[j];
}
}
return new Array(a,b);
};