1. 程式人生 > 其它 >【leet-code】219. 存在重複元素 II之Python enumerate() 函式

【leet-code】219. 存在重複元素 II之Python enumerate() 函式

給你一個整數陣列 nums 和一個整數 k ,判斷陣列中是否存在兩個 不同的索引 i 和 j ,滿足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否則,返回 false 。

循序漸進的學習和寫碼及學習的過程!並且學到一個Python enumerate() 函式,很方便。

classSolution(object): defcontainsNearbyDuplicate(self,nums,k): dict={} #1、方法1 #此法錯誤,獲取index(num)取值總是第一個,於是改為索引 #fornuminnums: #dict[num]=[]
#ifnumnotindict.keys(): #dict[num]=nums.index(num) #else: #dict[num].append(nums.index(num)) ##dict[num].append(nums.index(num)) #print(dict)

#方法2----超時 #字典的值在每次被新增被清空 #foriinrange(len(nums)): #ifnums[i]notindict.keys(): #dict[nums[i]]=list() #dict[nums[i]].append(i) ##print(dict)
#方法3、接著求長度超過1,取裡面的最小值相減,與k比較
#forvalueindict.values(): #iflen(value)>1: #print(value) #foriinrange(len(value)-1): #ifvalue[i+1]-value[i]<=k: #returnTrue #returnFalse
#方法4--字典被新增時比較---超時 #foriinrange(len(nums)): #ifnums[i]notindict.keys(): #dict[nums[i]]=list() #dict[nums[i]].append(i) #else: #ifi-dict[nums[i]][0]<=k: #returnTrue
#else: #dict[nums[i]].pop() #dict[nums[i]].append(i) #returnFalse
#方法5-字典新增時比較,不用列表------超時 #foriinrange(len(nums)): #ifnums[i]indict.keys()andi-dict[nums[i]]<=k: #returnTrue #else: #dict[nums[i]]=i #returnFalse
#方法6 fori,numinenumerate(nums): ifnumindictandi-dict[num]<=k: returnTrue dict[num]=i returnFalse