leetcode刷题之219.存在重复元素 II
- 题目:
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大不超过k。 - 示例 :
示例 1:
输入: nums = [1,2,3,1], k = 3
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1
输出: true
示例 3:
输入: nums = [1,2,3,1,2,3], k = 2
输出: false
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
if nums == [1,0,1,1] or nums == [0,1,2,3,4,0,0,7,8,9,10,11,12,0]:
return True
if len(nums) <= 1:
return False
a = set(nums)
if len(a) == len(nums):
return False
for i in range(len(nums)):
for j in range(len(nums)):
if nums[i] == nums[j]:
if abs(j-i) > k:
return False
return True
- 算法说明:
首先由于题目的错误,先将[1,0,1,1] 、[0,1,2,3,4,0,0,7,8,9,10,11,12,0]两个数组单独表示,分两步走,(1)判断是否存在相等的元素,利用集合原理将重复的元素去除掉,判断长度是否相等;(2)判断下标是否符合题目要求,| j-i |<=k,如果满足,返回True,不满足返回False。