标签:leet code nums value 219 num dict len append
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
循序渐进的学习和写码及学习的过程!并且学到一个Python enumerate() 函数,很方便。
class Solution(object): def containsNearbyDuplicate(self, nums, k): dict={} #1、方法1 #此法错误,获取index(num)取值总是第一个,于是改为索引 # for num in nums: # dict[num]=[] # if num not in dict.keys(): # dict[num]=nums.index(num) # else: # dict[num].append(nums.index(num)) # # dict[num].append(nums.index(num)) # print(dict)#方法2----超时 #字典的值在每次被添加被清空 # for i in range(len(nums)): # if nums[i] not in dict.keys(): # dict[nums[i]]=list() # dict[nums[i]].append(i) # # print(dict)
# 方法3、接着求长度超过1,取里面的最小值相减,与k比较 # for value in dict.values(): # if len(value)>1: # print(value) # for i in range(len(value)-1): # if value[i+1]-value[i]<=k: # return True # return False
#方法4--字典被添加时比较---超时 # for i in range(len(nums)): # if nums[i] not in dict.keys(): # dict[nums[i]]=list() # dict[nums[i]].append(i) # else: # if i-dict[nums[i]][0]<=k: # return True # else: # dict[nums[i]].pop() # dict[nums[i]].append(i) # return False
#方法5-字典添加时比较,不用列表------超时 # for i in range(len(nums)): # if nums[i] in dict.keys() and i-dict[nums[i]]<=k: # return True # else: # dict[nums[i]]=i # return False
#方法6 for i, num in enumerate(nums): if num in dict and i - dict[num] <= k: return True dict[num] = i return False
标签:leet,code,nums,value,219,num,dict,len,append 来源: https://www.cnblogs.com/jessicazhangblog/p/15823678.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。