0

Please let me know is this a best approach to find unique number from an array?

var singleNumber = function(nums) {
  for (var i = 0; i < nums.length; i++) {
    if (i === 0) {
      nums[0] = 0 ^ nums[0];
      /* console.log(nums[0]); */
    } else {
      nums[0] ^= nums[i];
      /* console.log(nums[0]); */
    }

  }
  console.log(nums[0]);
  return nums[0];


};

singleNumber([2, 2, 3, 3, 4]);

If you have any better approach with this, help me out.

CRice
  • 29,968
  • 4
  • 57
  • 70

1 Answers1

2

I've created two functions that return unique numbers from a passed array:

var getFirstUniqueNumber = function(nums) {
    var number = null;
    var map = {};
    nums.forEach((val) => {
        if (!map[val] && (number === null)) number = val;
        if (map[val] && (number !== null)) number = null;
        map[val] = true;
    });
    return number;
};

var getLastUniqueNumber = function(nums) {
    var number = null;
    var map = {};
    nums.forEach((val) => {
        if (!map[val]) number = val;
        map[val] = true;
    });
    return number;
};

I've created a Fiddle here: https://jsfiddle.net/u88qgxrr/2/

They do what the name says, you probably want the last unique number!

Terry Lennox
  • 29,471
  • 5
  • 28
  • 40