↓快轉到主要內容
  1. LeetCode/

LeetCode 217: Contains Duplicate

·1 分鐘· ·
LeetCode Easy Array Hash-Table Sorting
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-08-21

  • 提交紀錄:Wrong Answer → Accepted → Wrong Answer → Accepted ×4

解題思路
#

set(nums) 會去掉重複,長度變短就有重複(Hash Table)。想提早結束的話,邊掃邊放進集合,看到已經在裡面的就回傳 True。

我的嘗試
#

2022-08 和 2022-10 兩次都寫成 len(set(nums)) == len(nums),意思剛好相反:沒有重複時回傳 True。改成 != 就 AC 了。

正確解法
#

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        seen = set()
        for x in nums:
            if x in seen:
                return True
            seen.add(x)
        return False

複雜度
#

時間 O(n),空間 O(n)。

要特別避免的錯誤
#

  • 長度不相等才有重複,不要寫反。

面試口說整理
#

我邊掃邊把數字放進集合,遇到已經在集合裡的就代表有重複。時間 O(n)、空間 O(n);也可以直接比較 set 和原陣列的長度。

相關文章

LeetCode 169: Majority Element
·1 分鐘
LeetCode Easy Array Hash-Table Divide-and-Conquer Sorting
LeetCode 169 解題筆記:Boyer-Moore 投票,不同的數兩兩抵消,最後留下的就是出現超過一半的那個
LeetCode 219: Contains Duplicate II
·1 分鐘
LeetCode Easy Array Hash-Table Sliding-Window
LeetCode 219 解題筆記:雜湊表記錄每個值最後一次出現的位置,只需要跟最近的那次比距離
LeetCode 1: Two Sum
·1 分鐘
LeetCode Easy Array Hash-Table
LeetCode 1 解題筆記:一邊掃一邊把看過的數存進雜湊表,查 target - x 有沒有出現過;先查再存,同一個元素才不會用兩次
LeetCode 202: Happy Number
·1 分鐘
LeetCode Easy Hash-Table Math Two-Pointers Floyds-Cycle-Finding-Algorithm
LeetCode 202 解題筆記:一直取位數平方和,會走到 1 或進入環;用集合記看過的數,或用快慢指針判圈
LeetCode 205: Isomorphic Strings
·1 分鐘
LeetCode Easy Hash-Table String
LeetCode 205 解題筆記:兩個字串的字元要一對一對應,字元種類數和配對種類數都相同就成立
LeetCode 228: Summary Ranges
·1 分鐘
LeetCode Easy Array
LeetCode 228 解題筆記:掃一次,和前一個數連續就延長目前的區間,否則開一個新的區間,最後轉成字串