剑指Offer_找出数组中重复的数字

118 阅读1分钟

题目链接:www.acwing.com/problem/con…

分析

  1. 数组中出现 <0 || >nums.length 直接return -1 一重循环
  2. map + 遍历 当map之前包含该数时,return nums[i] 一重循环

Code

/**
 * @param {number[]} nums
 * @return {number}
 */
var duplicateInArray = function(nums) {
    for(let i = 0; i < nums.length; i ++){
        if(nums[i] < 0 || nums[i] >= nums.length) return -1;
    }
    
    const map = new Map();
    for(let i = 0; i < nums.length; i ++){
        if(map.has(nums[i])) return nums[i];
        else map.set(nums[i], 1);
    }
    
    return -1;
};