切換
舊版
前往
大廳
主題

LeetCode - 217. Contains Duplicate 解題心得

Not In My Back Yard | 2020-09-12 00:00:28 | 巴幣 2 | 人氣 144

題目連結:


題目意譯:
給定一整數陣列 nums,找出是否有任何重複的元素。

如果有任何的值出現至少兩次,你的函式應回傳真(True);反之,若所有元素皆相異,則回傳假(False)。



範例測資:
範例 1:
輸入: [1,2,3,1]
輸出: true

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

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


解題思維:
對於每一個元素去一一跑過陣列去找當然很沒有效率,會超過執行時間的上限。

因此,我們可以將陣列由小排到大(由大排到小也行),接著兩兩相鄰元素作比較。如果是一樣,就回傳真(因為值一樣的話,排序會將它們排在一起)。如果都沒有,就是回傳假。

或是也可以使用雜湊表(Hash Table),掃過每一個元素,看該元素是否已經出現在雜湊表裡過了。如果有,則回傳真;反之,繼續到下一個元素。如果沒有任何元素重複,此時才回傳假。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作