Skip to content

260. Single Number III #81

@jzhangnu

Description

@jzhangnu
132ms hashMap
var singleNumber = function(nums) {
    var hashT={},
        arr=[];

    for(var i=0;i<nums.length;i++){
        if(hashT[nums[i]]===undefined)hashT[nums[i]]=1;
        else hashT[nums[i]]++;
    }

    for(var j in hashT){
        if(hashT[j]==1)arr.push(parseInt(j));
    }
    return arr
};



99ms hashMap_改
var singleNumber = function(nums) {
    var hashT={}, arr=[];

    for(var i=0;i<nums.length;i++){
      //diff
        if(!hashT[nums[i]])hashT[nums[i]]=true;
        else delete hashT[nums[i]];
    }

    for(var j in hashT){
        arr.push(+j);
    }
    return arr
};



136ms
var singleNumber = function(nums) {
    var arr=[],count=0;
    nums.sort(function(a,b){return a-b})
    for(var i=0;i<nums.length;){ 
        if(nums[i]==nums[i+1])i+=2;
        else {
            arr.push(nums[i]);
            count++;
            i++;
        }
        if(count==2)return arr;
    }
};



166ms
var singleNumber = function(nums) {
    var arr=[];
    for(var i=0;i<nums.length;i++){ 
        var index = arr.indexOf(nums[i]);
        if(index == -1)arr.push(nums[i]);
        else arr.splice(index,1);
    }
    return arr
};


//Bit manipulation
var singleNumber = function(nums) {
    var arr=[],count=0;
    
    nums.sort(function(a,b){return a-b});
    
    for(var i=0;i<nums.length;){ 
        if((nums[i] ^ nums[i+1]) === 0 && nums[i+1] !== undefined)i+=2;
        else {
            arr.push(nums[i]);
            count++;
            i++;
            
        }
        if(count==2)return arr;
    }
};




var singleNumber = function(nums) {
    var xor = 0,
        len = nums.length,
        lastDigit,
        x = 0,
        y = 0,
        result = [],
        i;
        
    for (i = 0; i < len; i++) {
        xor ^= nums[i];
    }
    
    lastDigit = xor - (xor & (xor - 1));
    
    for (i = 0; i < len; i++) {
        if ((nums[i] & lastDigit) === 0) {
            x ^= nums[i];
        } else {
            y ^= nums[i];
        }
    }
    
    result.push(x);
    result.push(y);
    
    return result; 
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions