天天看點

LeetCode 217:存在重複元素 Contains Duplicate

題目:

給定一個整數數組,判斷是否存在重複元素。

Given an array of integers, find if the array contains any duplicates.

如果任何值在數組中出現至少兩次,函數傳回 true。如果數組中每個元素都不相同,則傳回 false。

Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

示例 1:

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

複制

示例 2:

輸入: [1,2,3,4]
輸出: false
           

複制

示例 3:

輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true
           

複制

解題思路:

排序數組,連續兩個數相等則證明存在重複元素。

直接用哈希集合:建立一個哈希集合,逐個向集合内添加元素,如果遇到元素未添加成功,則證明存在重複元素,傳回 True ,反之傳回 False。

代碼:

這裡用的哈希集合解題

Java:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new LinkedHashSet<>();
        for (int num : nums) {
            if (!set.add(num)) return true; //加入集合未成功,證明集合内已有一個相同元素,傳回False
        }
        return false;
    }
}
           

複制

Python:

Python中 set() 函數可以直接将數組轉化為哈希集合。直接比較轉化後的哈希集合長度與原數組長度是否相等,相等證明原數組無重複元素,不相等則證明原數組含有重複元素。

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        return len(nums) != len(set(nums)) #比較長度           

複制