存在重复元素

2021-04-18  本文已影响0人  fan_8209

给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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为数组的长度。

上一篇下一篇

猜你喜欢

热点阅读