Leetcode 217/218. Contains Duplicate

Question1

Solution1

考虑字典

1
2
3
4
5
6
7
8
9
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
dict = {}
for num in nums:
if num not in dict:
dict[num] = 1
else:
return True
return False

Soltion2

更简单的,用set,然后比较和nums的长度

1
2
3
4
5
6
7
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
seet = set(nums)
if len(seet) == len(nums):
return False
else:
return True
1
2
3
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums) != len(set(nums))

Question2

Solution1

用字典比较,如果遇到重复数,如果差大于k,则更新对应key的值,否则返回True。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
if len(nums) == len(set(nums)):
return False
dicct = {}
for i in range(len(nums)):
if nums[i] not in dicct:
dicct[nums[i]] = i
else:
if i - dicct[nums[i]] > k:
dicct[nums[i]] = i
else:
return True
return False