美文网首页
数组中重复的数字

数组中重复的数字

作者: HelenYin | 来源:发表于2021-05-10 11:38 被阅读0次

    方法一

    哈希表/Set

    方法二:原地交换

    数组元素的索引和值是一对多的关系
    因此可以遍历数组并通过交换操作,使元素的索引与值一一对应,即nums[i]=i。就可以通过索引映射对应的值,起到与字典等价的作用。

    遍历中,第一次遇到数字x时,将其交换至索引x处,而当第二次遇到数字x时,一定有numsp[x] = x,此时就可以得到一组重复的数字

    var findRepeatNumber1 = function (nums) {
      const obj = {}  
      for (const i of nums) {
        if (!obj[i]) {
          obj[i] = true
        } else {
          return i
        }
      }
    }
    
    var findRepeatNumber2 = function (nums) {
      for (let i = 0; i < nums.length; i++) {
        if (i === nums[i]) {
          continue
        } else {
          let temp = nums[nums[i]]
          if (temp === nums[i]) {
            return temp
          }
          nums[nums[i]] = nums[i]
          nums[i] = temp
        }
      }
    }
    
    console.log(findRepeatNumber2([2, 3, 1, 0, 2, 5, 3])); 
    

    相关文章

      网友评论

          本文标题:数组中重复的数字

          本文链接:https://www.haomeiwen.com/subject/yktnlltx.html