我是靠谱客的博主 直率小鸭子,这篇文章主要介绍【LeetCode 简单题】57-存在重复元素声明:正文结尾,现在分享给大家,希望可以做个参考。

声明:

今天是第57道题。给定一个整数数组,判断是否存在重复元素。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

题目:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

复制代码
1
2
输入: [1,2,3,1] 输出: true

示例 2:

复制代码
1
2
输入: [1,2,3,4] 输出: false

示例 3:

复制代码
1
2
输入: [1,1,1,3,3,4,3,2,4,2] 输出: true

解法1。这道题最简单最常规的想法就是用字典存放每个元素及其出现的频数,然后通过遍历频数,如果遇到大于1的就返回True,遍历完了还没找到就返回False,耗时40 ms, 在Contains Duplicate的Python提交中击败了70.22% 的用户,代码如下。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ nums_dict = {} for num in nums: if num not in num_dict: nums_dict[num] = 1 else: nums_dict[num] += 1 for i in nums_dict.values(): if i > 1: return True return False

 解法2:看了LeetCode上耗时最短的题,原来这道题考察的是set的用法,集合set自带去重的作用,如果原数组里有重复元素,那么必然去重后长度会变短,按照这个逻辑一句话就搞定了,耗时36 ms, 在Contains Duplicate的Python提交中击败了89.33% 的用户,代码如下。

复制代码
1
2
3
4
5
6
7
class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ return len(nums) != len(set(nums))

解法3。也可以选择先把list排序,排完序若是有重复元素那么必然相邻,遍历判断是否有相邻元素相等即可,44 ms, 在Contains Duplicate的Python提交中击败了52.16% 的用户,代码如下。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ nums.sort() # 将nums排好序 for i in range(1,len(nums)): if nums[i] == nums[i-1]: return True return False

结尾

解法1:原创

解法2 & 解法3:LeetCode

感觉LeetCode上的执行用时作为衡量算法优劣不太靠谱啊……存在随机性,有时好有时坏的

最后

以上就是直率小鸭子最近收集整理的关于【LeetCode 简单题】57-存在重复元素声明:正文结尾的全部内容,更多相关【LeetCode内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部