给定一个整数数组,判断是否存在重复元素。

存在重复元素
给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false

  • 示例 1:

输入: [1,2,3,1]
输出: true

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x248f5/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


1,依次遍历,用nums[i]与数组中后面的数字对比是否相等(使用for):

var containsDuplicate = function (nums) {
    let flag = false
    for (let i = 0; i < nums.length; i++) {
        for (let o = i + 1; o < nums.length; o++) {
            if (nums[i] === nums[o]) {
                flag = true
            }
        }
    }
    return flag
};

2,依次遍历,用nums[i]与数组中后面的数字对比是否相等(使用include),判断i后面的数组中是否包含nums[i]:

var containsDuplicate = function (nums) {
   let flag = false
   for (let i = 0; i < nums.length; i++) {
       if ((nums.slice(i + 1, nums.length)).includes(nums[i])) {
           flag = true
       }
   }
   return flag
};

3,使用哈希

var containsDuplicate3 = function (nums) {
    let tempNums = []
    for (let i in nums) {
        if (tempNums[nums[i]]) {
            return true
        }
        tempNums[nums[i]] = true;
    }
    return false
}

上面这个是通过javascript的哈希而来

首先要了解javascript中对象,数组,对象都可以看作是键-值,如下面的演示:

const person = [];
person["name"] = "小明"
person["age"] = 18
person["hobbies"] = '睡觉'
// console.dir(person);
for (const key in person) {
    console.log(key + ":" + person[key]);
}

而在3中,依次遍历nums中的对象,如果tempNums[nums[i]]中的对象为true,
那么就将返回true,并终止运行后面的代码,

  • 那么它是如何遍历到重复数组返回true的呢:

如果有一个数组:let nums = [2, 14, 18, 22, 22]
在遍历2时,tempNums中不存在,则在tempNums[2]中标记为true,
在便利到第一个22时,会将tempNums[22]标记为true,
那么在遍历第二个22时,i=4(nums中的index),tempNums[22]之前已经被标为true了,
所以就直接返回true,不必再往后运行

在这里插入图片描述
在这里插入图片描述
神奇and迷惑

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名之辈无名之辈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值