給定一個整數數組,判斷是否存在重複元素。
若是任何值在數組中出現至少兩次,函數應該返回 true。若是每一個元素都不相同,則返回 false。數組
1.本身的方法,雙循環,可是題目提示超過期間限制了函數
class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ if len(nums)==0: return False else: for i in range(len(nums)): for j in range(len(nums)): if nums[i]==nums[j] and i!=j: return True return False
2.後面又想到一種方法,先排序,對比先後兩個元素的值,若是存在至關就返回True。len(nums)-1由於取值i到倒數第二位就能夠對比完,由於if 使用的是nums[i+1]code
class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ nums.sort() if len(nums) == (1 or 0): return False else: for i in range(len(nums)-1) : if nums[i] == nums[i+1]: return True return False
3.樓下有大神回覆了,看到一種比較簡答的優秀解法:對數據去重,若是長度變化,說明存在重複元素。排序
class Solution: def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ return True if len(nums) != len(set(nums)) else False
4.樓下大神的字典解法:也很優秀,若是字典不存在數組的值,就dict[i] =iget
class Solution(object): def containsDuplicate(self, nums): if len(nums) == 0: return False; else: dict = {} for i in nums: if dict.get(i) is not None: return True else: dict[i] = i return False