Leetcode-探索 | 存在重复

Posted STUqza

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode-探索 | 存在重复相关的知识,希望对你有一定的参考价值。

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1]
输出: true

示例 2:

输入: [1,2,3,4]
输出: false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

——————————————————————————————————————————————

用Python的list.cout()方法暴力试一下:TOL

 1 class Solution(object):
 2     def containsDuplicate(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: bool
 6         """
 7         list_len = len(nums)
 8         for i in range(0, list_len):
 9             if nums.count(nums[i]) > 1:
10                 return True
11         
12         return False

然后看到别人的博客里有手写循环暴力的,又试了一下:TOL

 1 class Solution(object):
 2     def containsDuplicate(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: bool
 6         """
 7         list_len = len(nums)
 8         for i in range(0, list_len):
 9             for j in range(i+1, list_len):
10                 if nums[i] == nums[j]:
11                     return True
12         
13         return False

 然后偷看了别人的代码,发现可以先排序,这样时间复杂度反而下降,思路非常顺畅:AC

 1 class Solution(object):
 2     def containsDuplicate(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: bool
 6         """
 7         array_len = len(nums)
 8         nums.sort()
 9         for i in range(0, array_len-1):
10             if nums[i] == nums[i+1]:
11                 return True
12         
13         return False

想不到更好的方法了……

这题对我来说挺有意思,水尽山穷疑无路 -> 柳暗花明的感觉,再想想应该会有其他的启发。

 

以上是关于Leetcode-探索 | 存在重复的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode-探索 | 两数之和

LEETCODE 003 找出一个字符串中最长的无重复片段

Leetcode-探索 | 从排序数组中删除重复项

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

LeetCode 最长公共前缀(探索字节跳动)

LeetCode217. 存在重复元素(C++)