給定一個整數數組,判斷是否存在重複元素。
如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。
示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
看到題目,重複的元素,我立刻就想起了之前做過的LeetCode.136, 但這題還不太一樣。首先重複出現的次數是不定的,而且也不是隻能有一個數字是重複數字,其他很多數字都可以。
解析
我自己的辦法是,先排序,然後看相鄰元素是不是相等就ok了。排序時間複雜度是NlogN,遍歷比較是N。
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
if len(nums) <= 1:
return False
nums.sort()
for i in range(1, len(nums)):
if nums[i] == nums[i-1]:
return True
return False
看到題解,用到了set。哎呦,set在之前的題目中也有妙用,總是記不住。以後遇到什麼重複字眼的題目,就首先要想到set能不能用到。
使用set得到無重複的數字。然後判斷set之後的集合的長度,是否等於原數組長度。