Contains Duplicate II
给一int数组和int K,问数组中有没有下标差不超过K的相同数字。
先给自己的代码:
def containsNearbyDuplicate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
"""
usedInt = {}
for i in range(len(nums)):
if nums[i] not in usedInt:
usedInt[nums[i]] = [i]
else:
for seNum in usedInt[nums[i]]:
if -k <= seNum - i <= k:
return True
usedInt[nums[i]].append(i)
return False
然后再上Solutions上的
def containsNearbyDuplicate(self, nums, k):
dic = {}
for i, v in enumerate(nums):
if v in dic and i - dic[v] <= k:
return True
dic[v] = i
return False
基本思路都是一样的,就是把数组里的数字当做下标,下标当做内容存在dict里,不过大神的用到了enumerate()函数来同时遍历下标和内容,学到了。
同时我把相同数字的下标全部存在dict里,存了一个list,但是大神只存当前遍历到的下标,原因是只要存在一个下标差不超过K的就可以,所以按顺序遍历的时候只存最大的下标就好。