大风哥的打怪升级之路
学如逆水行舟,不进则退

第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. 法1新创建了一个列表nums_list,重新开辟了一个内存,当原nums很大时,导致内存不足,计算不通过。
  2. 法2在原nums上进行排序(原址排序),未开辟新内存空间,计算通过。
posted on 2020-08-23 09:26  Little_Dandelion  阅读(88)  评论(0编辑  收藏  举报