第217題:存在重複元素
阿新 • • 發佈:2020-08-23
第217題:存在重複元素
描述:
給定一個整數陣列,判斷是否存在重複元素。
如果任意一值在陣列中出現至少兩次,函式返回true
。如果陣列中每個元素都不相同,則返回false
。
示例:
輸入: [1,2,3,1]
輸出: true
輸入: [1,2,3,4]
輸出: false
解題思路:(常規問題,常規解法)
法1使用棧的思想;法2使用快慢指標的思想。
Python程式碼(超時):
1 class Solution(object): 2 def containsDuplicate(self, nums): 3 """ 4 :type nums: List[int]5 :rtype: bool 6 """ 7 nums_list = [] 8 for i in nums: 9 if i not in nums_list: # not的使用 10 nums_list.append(i) 11 else: 12 return True 13 return False
Python程式碼(通過):
1 class Solution(object): 2 defcontainsDuplicate(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: bool 6 """ 7 nums.sort() # sort()方法無返回值 8 for i in range(len(nums) - 1): 9 if nums[i] == nums[i + 1]: 10 return True 11 return False
方法對比:
- 法1新建立了一個列表nums_list,重新開闢了一個記憶體,當原nums很大時,導致記憶體不足,計算不通過。
- 法2在原nums上進行排序(原址排序),未開闢新記憶體空間,計算通過。