第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 def containsDuplicate(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上进行排序(原址排序),未开辟新内存空间,计算通过。
书痴者文必工,技痴者艺必良