存在重復(fù)元素

給定一個(gè)整數(shù)數(shù)組,判斷是否存在重復(fù)元素。
如果存在一值在數(shù)組中出現(xiàn)至少兩次,函數(shù)返回 true 。如果數(shù)組中每個(gè)元素都不相同,則返回 false 。

示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
1、我想到的最簡(jiǎn)單的應(yīng)該是用set方式與原數(shù)組長(zhǎng)度比較

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

時(shí)間復(fù)雜度:O(1)
空間復(fù)雜度:O(n),n為數(shù)組長(zhǎng)度
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
};

時(shí)間復(fù)雜度: O(N logN),其中 N為數(shù)組的長(zhǎng)度。需要對(duì)數(shù)組進(jìn)行排序。
空間復(fù)雜度:
O(log N),其中 N為數(shù)組的長(zhǎng)度。注意我們?cè)谶@里應(yīng)當(dāng)考慮遞歸調(diào)用棧的深度。

3、哈希表。遍歷數(shù)組,當(dāng)前數(shù)字存在哈希表中,返回即可。哈希表中不存在當(dāng)前數(shù)字,則將該數(shù)字加入到哈希表中

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
};

時(shí)間復(fù)雜度:O(N),其中 N為數(shù)組的長(zhǎng)度。
空間復(fù)雜度:O(N),其中 N為數(shù)組的長(zhǎng)度。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容