[LeetCode] 217. Contains Duplicate === ###### tags: `LeetCode` ## 題目 Given an integer array `nums`, return `true` if any value appears **at least twice** in the array, and return `false` if every element is distinct. **Example 1:** ``` Input: nums = [1,2,3,1] Output: true ``` **Example 2:** ``` Input: nums = [1,2,3,4] Output: false ``` **Example 3:** ``` Input: nums = [1,1,1,3,3,4,3,2,4,2] Output: true ``` **Constraints:** - `1 <= nums.length <= 105` - `109 <= nums[i] <= 109` ### 第一版 透過 Set 來儲存已判斷過的值 ```=Java class Solution { fun containsDuplicate(nums: IntArray): Boolean { val saveSet = mutableSetOf<Int>() for (i in 0 until nums.size) { if (!saveSet.add(nums[i])) {// 加入失敗,表示已經存過了,此數值出現了第二次,回傳 true return true } } return false } } ``` **Success** [Details](https://leetcode.com/submissions/detail/621581480/) Runtime: 751 ms, faster than 22.41% of Kotlin online submissions for Contains Duplicate. Memory Usage: 72.2 MB, less than 15.75% of Kotlin online submissions for Contains Duplicate. --- ### 第二版 直接將 array 轉成 set ```=Java class Solution { fun containsDuplicate(nums: IntArray): Boolean { val set = nums.toSet() if (nums.size == set.size) { return false } return true } } ``` **Success** [Details](https://leetcode.com/submissions/detail/621580649/) Runtime: 428 ms, faster than 49.04% of Kotlin online submissions for Contains Duplicate. Memory Usage: 50.7 MB, less than 54.03% of Kotlin online submissions for Contains Duplicate. --- ### 第三版 Solution 1 換一種 for loop ```=Java class Solution { fun containsDuplicate(nums: IntArray): Boolean { val saveSet = mutableSetOf<Int>() for (num in nums) { if (!saveSet.add(num)) { return true } } return false } } ``` **Success** [Details](https://leetcode.com/submissions/detail/621585885/) Runtime: 368 ms, faster than 66.97% of Kotlin online submissions for Contains Duplicate. Memory Usage: 45.2 MB, less than 75.16% of Kotlin online submissions for Contains Duplicate. --- ### 最終版 mutableSetOf 改成 HashSet ```=Java class Solution { fun containsDuplicate(nums: IntArray): Boolean { val saveSet = HashSet<Int>() for (num in nums) { if (!saveSet.add(num)) { return true } } return false } } ``` **Success** [Details](https://leetcode.com/submissions/detail/621586620/) Runtime: 336 ms, faster than 75.80% of Kotlin online submissions for Contains Duplicate. Memory Usage: 45.1 MB, less than 75.16% of Kotlin online submissions for Contains Duplicate.