【LeetCode练习】剑指 Offer 03. 数组中重复的数字(简单|JS|哈希(Set))

一、题目描述

在这里插入图片描述

二、解题思路

方法1:
使用哈希,js中Set数据结构,判断set里面有没有当前数字,没有则加入set里面,有则直接返回结果。
方法2:
因为数字都是0~n-1的范围,因此可以直接利用此特性将元素放到对应下标,如果出现重复的话就会一个下标出现了两个数字,直接返回。

三、代码实现

方法1:

var findRepeatNumber = function(nums) {
    const s = new Set()
    for(const num of nums){
        if(s.has(num)) return num
        s.add(num)
    }
};

方法2:

var findRepeatNumber = function(nums) {
    // for(let i=0;i<nums.length;i++){
    //     const id = nums.slice(i+1).indexOf(nums[i])
    //     if(id!=-1) return nums[i] 
    // }
    for(let i=0;i<nums.length;i++){
        if(nums[i]==i){
            continue
        }else if((nums[nums[i]]==nums[i])) return nums[nums[i]]
        else{
            [nums[nums[i]],nums[i]] = [nums[i],[nums[nums[i]]]]
        }
    }
    if(nums[nums.length-1] == 0 ) return 0
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值