Contains Duplicate II
給一int數(shù)組和int K侄柔,問數(shù)組中有沒有下標差不超過K的相同數(shù)字。
先給自己的代碼:
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
基本思路都是一樣的盗温,就是把數(shù)組里的數(shù)字當(dāng)做下標,下標當(dāng)做內(nèi)容存在dict里减江,不過大神的用到了enumerate()函數(shù)來同時遍歷下標和內(nèi)容褒链,學(xué)到了。
同時我把相同數(shù)字的下標全部存在dict里啊终,存了一個list镜豹,但是大神只存當(dāng)前遍歷到的下標,原因是只要存在一個下標差不超過K的就可以蓝牲,所以按順序遍歷的時候只存最大的下標就好趟脂。