【leet-code】219. 存在重複元素 II之Python enumerate() 函式
阿新 • • 發佈:2022-01-20
給你一個整數陣列 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]=[]#方法2----超時 #字典的值在每次被新增被清空 #foriinrange(len(nums)): #ifnums[i]notindict.keys(): #dict[nums[i]]=list() #dict[nums[i]].append(i) ##print(dict)
#方法3、接著求長度超過1,取裡面的最小值相減,與k比較
#方法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
#方法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