存在重复元素
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
这里的解答用到了投机取巧的一种方法,使用set函数:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
n = len(nums)
c = len(set(nums))
if n>c:
return True
else:
return False
介绍:
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
我使用了append,insert等方法,但不知道为什么一直说超时,难道这样的时间复杂度是O(n2)?
下面说说传统方法,即哈希表的python实现:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
dic = {
}
for i in nums:
if dic.get(i):
return True
dic[i]=1
return False
这里可以看到,实际我们就是使用了字典,字典正是使用哈希表实现的。
我们这里使用了get()方法:
介绍:Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。
返回:返回指定键的值,如果值不在字典中返回默认值 None。
存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。
这里仍然是使用哈希表,也就是字典完成题目,但是我们这次改变键值对的配置方法,将数字设置成key,而将数字对应的数组下标设置为value。然后:
- 每次检查新的数字是否存在于这个字典中,若存在,则将当前的数组下标与字典中相应的key对应的value相减&#