Algorithm 无法在O(n)时间内解决孤独号码问题

Algorithm 无法在O(n)时间内解决孤独号码问题,algorithm,data-structures,Algorithm,Data Structures,在给定的数字数组中,一个元素将显示一次,其余元素将显示两次。你能在O(n)线性时间内找到那个数吗 例如-lonelyNumber([4,4,6,1,3,1,3])//6 到目前为止,我正在用javascript和我的代码尝试这一点- var lonelyNumber=function(arr) { for(var i=0;i<arr.length;i++) { for(var j=0;j<arr.length;j++) { if(j!==i &&

在给定的数字数组中,一个元素将显示一次,其余元素将显示两次。你能在O(n)线性时间内找到那个数吗

例如-
lonelyNumber([4,4,6,1,3,1,3])//6

到目前为止,我正在用javascript和我的代码尝试这一点-

var lonelyNumber=function(arr) {   
  for(var i=0;i<arr.length;i++) {
    for(var j=0;j<arr.length;j++) {
      if(j!==i && arr[i]===arr[j]) {
        break;
      }
    }
    if(j===arr.length) {
      return arr[i];
    }
  }
}

console.log(lonelyNumber([4, 4, 6, 1, 3, 1, 3]));
var lonelyNumber=函数(arr){

对于(var i=0;i您可以使用hashmap来实现这一点,方法是在javascript中使用对象

基本上,我在数组中循环,如果第一次找到对象,则添加新键,如果第二次找到对象,则删除键。最后,对象中唯一剩下的键就是结果

var lonelyNumber=function(arr) {
  var obj={};
  for(var i=0;i<arr.length;i++) {
    if(obj[arr[i]]) {
      delete obj[arr[i]];
    } else {
      obj[arr[i]]=true;
    }
  }
  return Object.keys(obj)[0];
}
var lonelyNumber=函数(arr){
var obj={};

for(var i=0;iHint:使用字典存储已看到的数字。我将搜索字典存储并尝试使用XOR all元素,这是您的答案。好的,我会尝试。谢谢。但对象如何成为hask映射?请参阅