1. 程式人生 > >【Leetcode_總結】 219. 存在重複元素 II -python

【Leetcode_總結】 219. 存在重複元素 II -python

Q:

219. 存在重複元素 II

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

思路: 如果沒有重複元素,返回False,如果 K > len(nums) 且裡面有重複元素,返回ture

剩下的就是暴力求解,遍歷一下,程式碼如下:

class Solution:
    def containsNearbyDuplicate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: bool
        """
        
        if len(list(set(nums))) == len(nums):
            return False
        left = 0
        right = left + k
        if k >= len(nums):
            return len(list(set(nums))) < len(nums)
        while right < len(nums):
            while left < right:
                if nums[left] == nums[right]:
                    return True
                else:
                    right -= 1
            left += 1
            right = left + k
        if len(list(set(nums[left:]))) < len(nums[left:]):
            return True
        return False