LeetCode--219--存在重复元素2
Posted Assange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode--219--存在重复元素2相关的知识,希望对你有一定的参考价值。
问题描述:
给定一个整数数组和一个整数 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
方法1:(只适用于正数组成的list)erro
1 class Solution(object): 2 def containsNearbyDuplicate(self, nums, k): 3 """ 4 :type nums: List[int] 5 :type k: int 6 :rtype: bool 7 """ 8 flag = True 9 nums = "".join([str(x) for x in nums]) 10 for i in range(len(nums)): 11 index = nums[i+1:].find(nums[i]) 12 if index >= 0 : 13 index += i + 1 14 while True: 15 if index - i == k: 16 return True 17 else: 18 temp = index 19 index = nums[temp+1:].find(nums[i]) 20 if index >= 0 : 21 index += temp+1 22 else: 23 return nums[i] 24 break 25 return False
官方:感觉很无厘头啊,[99,99] k = 2返回True........只能把小于号加上。。。。。理解错误,收到了例子的干扰。说的就是最大不超过K
1 class Solution(object): 2 def containsNearbyDuplicate(self, nums, k): 3 """ 4 :type nums: List[int] 5 :type k: int 6 :rtype: bool 7 """ 8 num_map={} 9 for i in xrange(len(nums)): 10 if nums[i] in num_map and i-num_map[nums[i]]<=k: 11 return True 12 else: 13 num_map[nums[i]]=i 14 return False
2018-09-19 14:47:04
以上是关于LeetCode--219--存在重复元素2的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 219: 存在重复元素 IIContains Duplicate II
LeetCode-219. 存在重复元素 II.(java)
LeetCode-219. 存在重复元素 II.(java)
leetcode-219-Contains Duplicate II(使用set来判断长度为k+1的闭区间中有没有重复元素)