【Leetcode】python - [217] Contains Duplicate 個人解法筆記 (updated: 2022/5/18)

題目出處

217. Contains Duplicate

難度

Easy

題目分類

Array, Hash Table, Sorting

個人範例程式碼 - 2022/5/18 三刷

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        if not nums:
            return False

        record = set()
        for num in nums:
            if num in record:
                return True
            else:
                record.add(num)

        return False

最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解

算法說明

找重複,有重複 return True

input handling

如果沒有 input,return False

Boundary conditions

for 迴圈控制範圍

個人範例程式碼 - 2022/3/3 二刷

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        loopuptable = {}
        for ele in nums:
            if ele in loopuptable.keys():
                return True
            else:
                loopuptable[ele] = True

        return False

說明

dictionary search 的時間只需要 O(1),
透過建立 dict 可以幫助我們快速查找已經出現的元素。

註:「if ele in loopuptable.keys()」 也可以寫成 「if ele in loopuptable」
只是寫成前者會更清楚。

個人範例程式碼 - 2022/2/24 一刷

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        return (len(set(nums)) != len(nums))

說明

這題考的東西很簡單,就是找有沒有重複的東西,
「找重複」非常適合使用 set 來做,我們只需要比較 set 之後的大小是否等於原長度即可。

Reference