219.存在重复元素 II
描述
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
示例
输入: nums = [1,2,3,1], k = 3
输出: true
输入: nums = [1,0,1,1], k = 1
输出: true
输入: nums = [1,2,3,1,2,3], k = 2
输出: false
我
只要数组中存在两个不同的索引i、j(i < j),且j-i<=k,则返回True,否则False。
1.使用字典d来存储,以数组元素为键,索引为值,遍历数组。
2.若nums[j]存在于字典中,则转入3,否则添加键值对d[nums[j]] = j。
3.进行索引值判断,若索引差值绝对值大于k,将字典d[nums[j]] = j进行更新,然后继续遍历数组返回1。若索引差值绝对值小于k,则return True。
4.return False。
class Solution:
def containsNearbyDuplicate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
"""
d = {}
for i in range(len(nums)):
if nums[i] in d:
if -k <= i - d[nums[i]] <= k:
return True
else:
d[nums[i]] = i
d[nums[i]] = i
return False