leetcode之Contains Duplicate II(219)

題目:

給定一個整數數組和一個整數 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

python代碼:

class Solution(object):
    def containsNearbyDuplicate(self, nums, k):
        nums_dict = {}
        for i in range(len(nums)):
            if nums[i] in nums_dict and i-nums_dict[nums[i]] <= k:
                return True
            else:
                nums_dict[nums[i]] = i
        return False

心得:

此題此種解法與博主的leetcode第一題Twosum解法神似,凡是需要用到下標的很多題都可以構造一個字典,字典的鍵是數組(列表)中的值,值爲其下標,第一題的解法在這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章