LeetCode 筆記|217. Contains Duplicate
Given an integer array
nums
, returntrue
if any value appears at least twice in the array, and returnfalse
if every element is distinct.
(給定一整數陣列,判斷其中是否含重複的數字。)
Example:
Input: nums = [1,2,3,1]
Output: true
解題思路
若 array 含重複數字,則有以下特性:
- 數字重複出現
- array 長度大於其中數字種類數
- 若將 array 排序,則重複的數字比鄰出現
根據第一種特性,可用 hash table 存儲讀過的數字,再判斷讀入的數字是否已存在 hash table 中。此處,我以 python 的 dict
充作 hash table 來實踐這個想法。
1 | class Solution: |
至於先排序,再比較數值兩側是否有重複值的做法,可參考:LeetCode 刷題紀錄 |217. Contains Duplicate (Easy)
延伸討論
使用 list, dict, set 存讀過的數字有什麼差異?(參考:廖雪峰的官方網站:使用dict和set)
python 是怎麼體現
set
的概念?(參考:How is set() implemented?)排序算法跟 hash table 算法相比有什麼優點?(參考:LeetCode 刷題紀錄 |217. Contains Duplicate (Easy))