再探滑动窗口:【存在重复元素 II】

简介: 再探滑动窗口:【存在重复元素 II】

题目


给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的 绝对值 至多为 k。


解题思路


  • 维护一个哈希表,用来模拟滑动窗口,里面始终最多包含 k 个元素,滑动窗口的大小为k,当出现重复值时则说明在 k 距离内存在重复元素
  • 每次遍历一个元素则将其加入哈希表中,如果哈希表的大小大于 k,则移除最前面的数字,滑动窗口滑动
  • 时间复杂度:O(n)


代码实现

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


相关文章
|
iOS开发 MacOS
Qt 报错:Undefined symbols for architecture arm64
MacBook Pro Apple M1 使用 Qt 6.4.1 的时候碰到的报错,做了不同的尝试,最后解决了这个报错。
1058 0
|
文字识别
统一多模态Embedding, 通义实验室开源GME系列模型
随着多媒体应用的迅猛发展,用户产生的数据类型日益多样化,不再局限于文本,还包含大量图像、音频和视频等多模态信息。这为信息检索带来了前所未有的挑战与机遇。传统的信息检索模型多关注单一模态,如仅对文本或图像进行分析和搜索。
3330 6
|
机器学习/深度学习 传感器 算法
【滤波】基于平方根无迹卡尔曼滤波SR-UKF实现信号去噪附matlab代码
【滤波】基于平方根无迹卡尔曼滤波SR-UKF实现信号去噪附matlab代码
|
算法 DataX
【数据结构】双向链表的增删查改(C 代码实现)
【数据结构】双向链表的增删查改(C 代码实现)
205 0
|
XML Android开发 数据格式
autojs简洁的登录界面
牙叔教程 简单易懂
696 0
|
PHP
【laravel】@3 artisan的灵活运用
【laravel】@3 artisan的灵活运用
219 0
【laravel】@3 artisan的灵活运用
|
Web App开发 JavaScript
webrtc 调用摄像头并实时在浏览器中显示图像
        WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。
3035 1
|
存储 Ubuntu Linux
Linux(Ubuntu)用户与用户组(入门必看)
Linux(Ubuntu)用户与用户组(入门必看)
|
小程序
微信小程序:miniprogram-date或day.js进行时间格式化和解析
微信小程序:miniprogram-date或day.js进行时间格式化和解析
810 0