力扣每日一题2022-01-19简单题:存在重复元素II

存在重复元素II

  • 219.存在重复元素II
    • 题目描述
    • 思路
      • 滑动窗口
        • Python实现
        • Java实现


219.存在重复元素II

题目描述

存在重复元素II


思路

滑动窗口

维护一个长度为k+1的集合作为窗口,判断是否出现重复,元素个数满了之后弹出k+1个前的数字。

Python实现

力扣每日一题2022-01-19简单题:存在重复元素II_第1张图片

class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        window = set()
        for i, num in enumerate(nums):
            if len(window) == k + 1:
                window.remove(nums[i - 1 - k])
            if num in window:
                return True
            window.add(num)
        return False
Java实现

力扣每日一题2022-01-19简单题:存在重复元素II_第2张图片

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; ++i) {
            if (set.size() == k + 1) {
                set.remove(nums[i - k - 1]);
            }
            if (set.contains(nums[i])) {
                return true;
            }
            set.add(nums[i]);
        }
        return false;
    }
}

你可能感兴趣的:(leetcode每日一题,leetcode)