Upon solving the problem 'contain duplicates` in leetcode:
Given an array of integers and an integer k , find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k .
Example 1:
Input: nums = [1,2,3,1] , k = 3 Output: true
Example 2:
Input: nums = [1,0,1,1] , k = 1 Output: true
Example 3:
Input: nums = [1,2,3,1,2,3] , k = 2 Output: false
I tried best to write a Pythonic style solution and improve the performance.
class Solution2: def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool: lookup = dict() #{value:index} for cur, val in enumerate(nums): prev = lookup.get(val) if prev != None and cur - prev <= k: #logging.debug(f"{cur - prev}") return True lookup[val] = cur #add it to lookup return False
Runtime: 68 ms, faster than 12.21% of Python3 online submissions for Contains Duplicate II. Memory Usage: 20.4 MB, less than 13.64% of Python3 online submissions for Contains Duplicate II.
I am confused about the score. I was 100% assure that it was the best possible solution.
What's the problem with my solution?