存在重复元素
leetcode链接:217. 存在重复元素
给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 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
这题的思路很简单,利用set函数即可去重代码也非常简单这里举两个版本
# 代码1
def containsDuplicate(self, nums: List[int]) -> bool:
a = set()
for i in nums:
if i not in a:
a.add(i)
else:
return True
return False
# 代码2
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums) != len(set(nums))
这里不说这个题目,而是跳出这个题目来说说下面几个问题:
1.用list与set来分别存储元素,然后利用内置函数in的查找时间复杂度相同么?
2.set函数与list相互转化后是咋样的?
1.List与set的速度比拼
对于一个小白来说,存储元素首先想到的是list,但是别忘了,python中还有许多数据结构可以用来线型或者非线性的存储元素,比如链表和set集合。这里不说其他的,就来单单比较一下list和set函数他们的内置函数in速度之差别。
我们利用time函数来记录时间。
# -*- coding: utf-8 -*-
import time
import random
l = [random.randrange(0, 1000000) for x in range(0, 1000000)]
s = {
x for x in range(0, 1000000)}
print('set size=', len(s))
# 测试 list,搜索 1000次,看花费时间
start_time = time.time()
for i in range(0, 1000):
x