美文网首页
存在重复元素

存在重复元素

作者: fan_8209 | 来源:发表于2021-04-18 12:15 被阅读0次

    给定一个整数数组,判断是否存在重复元素。
    如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

    示例 1:
    输入: [1,2,3,1]
    输出: true
    示例 2:
    输入: [1,2,3,4]
    输出: false
    1、我想到的最简单的应该是用set方式与原数组长度比较

    var containsDuplicate = function(nums) {
        let numSet = new Set(nums)
        if(nums.length==numSet.size()){
            return false
        }else{
            return true
        }
    };
    

    时间复杂度:O(1)
    空间复杂度:O(n),n为数组长度
    2、排序方法,排序之后判断相邻元素是否相同

    var containsDuplicate = function(nums) {
        nums.sort((a,b)=>a-b)
        console.log(nums)
        for(let i=1;i<nums.length;i++){
            if(nums[i]==nums[i-1]){
                return true
            }
        }
        return false
    };
    

    时间复杂度: O(N logN),其中 N为数组的长度。需要对数组进行排序。
    空间复杂度:
    O(log N),其中 N为数组的长度。注意我们在这里应当考虑递归调用栈的深度。

    3、哈希表。遍历数组,当前数字存在哈希表中,返回即可。哈希表中不存在当前数字,则将该数字加入到哈希表中

    var containsDuplicate = function(nums) {
        const hx = new Set()
        for(const i of nums){
            if(hx.has(i)){
                return true
            }else{
                hx.add(i)
            }
        }
        return false
    };
    var containsDuplicate = function(nums) {
        const hx = new Map()
        for(const i of nums){
            if(hx.has(i)){
                return true
            }else{
                hx.set(i)
            }
        }
        return false
    };
    

    时间复杂度:O(N),其中 N为数组的长度。
    空间复杂度:O(N),其中 N为数组的长度。

    相关文章

      网友评论

          本文标题:存在重复元素

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