首页 > 其他分享 >[219] 存在重复元素 II

[219] 存在重复元素 II

时间:2024-08-21 15:51:45浏览次数:9  
标签:map 窗口 nums 重复 元素 219 II int

模拟滑动窗口 

 

/*
 * @lc app=leetcode.cn id=219 lang=java
 *
 * [219] 存在重复元素 II
 */

// @lc code=start
class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        /**
         * 基本思路
         * 模拟 动态滑动窗口
         * 要求窗口左右两边的元素下标差,小于等于 k,即窗口的最大容量为 k + 1, 元素在数组中的下标范围[index, index + k]
         * 存储结构类似队列,但由于需要快速定位元素是否存在,这里使用HashSet, 通过遍历前后的 下标来将窗口最左边的元素弹出
         */

        // 存储当前窗口的元素,窗口长度 <= k
        HashSet<Integer> map = new HashSet<>();
        
        for(int i = 0; i < nums.length; i++)
        {
            int ele = nums[i];

            // 如果存在,则说明存在符合要求的重复元素
            if(map.contains(ele)){
                return true;
            }
        
            // 将这个元素放入
            map.add(ele);

            // 如果元素的数量 为 k + 1时,说明,当前窗口内不存在符合要求的元素
            if(map.size() == k + 1)
            {
                // 将窗口中最左边的元素弹出
                map.remove(nums[i - k]);
            }
        }

        return false;
    }
}
// @lc code=end

标签:map,窗口,nums,重复,元素,219,II,int
From: https://blog.csdn.net/qq_36790074/article/details/141323970

相关文章

  • 如何去除有序数组中的重复元素
    题目要求:输入一个有序的数组,你需要原地删除重复的元素,使得每个元素只能出现一次,返回去重后新数组的长度题目分析:原地删除,即不可以创建新的辅助数组,那么需要在原数组上修改解决。这种一般采用双指针技巧即:如果是普通数组,使用两个指针slow和fast,fast负责网后遍历,如果发现数组元素......
  • 防止重复下单
    一、如何避免重复下单前端页面也可直接防止用户重复提交表单,但网络错误会导致重传,很多RPC框架、网关都有自动重试机制,所以重复请求在前端侧无法完全避免!问题最后还是如何保证服务接口的幂等性。1.1如何判断请求是重复的插入订单前,先查一下订单表,有无重复订单?难以用SQL条件......
  • 最大连续1的个数 III(LeetCode)
    题目        给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。解题deflongestOnes(nums,k):left=0max_len=0zero_count=0forrightinrange(len(nums)):#如......
  • 删除字符串中的所有相邻重复项(1047)
    题目描述给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。解题思路这里我们还是使用栈这个数据结构,我们还是遍历当前字符串,......
  • 配置stm32cubemx采集stm32H743IIT6,通过DMA实现多通道和多模块ADC的采集,亲测有效!
     之前写到stm32cubemx通过阻塞实现单通道和多通道的ADC的采集。本文分享通过DMA实现单模块多通道和多模块多通道的ADC采集。stm32cubemx的版本6.10.0。一、DMA采集多通道ADC数据阻塞采集是每次采集adc数据,cpu死等,直到采集完或者在设定时间超时没能采集,返回到cpu。DMA采集......
  • Leetcode 59.螺旋矩阵II
    力扣题目链接(opensnewwindow)**给定一个正整数n,生成一个包含1到n^2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入:3输出:[[1,2,3],[8,9,4],[7,6,5]]思路这道题目可以说在面试中出现频率较高的题目,本题并不涉及到什么算法,就是......
  • Leetcode面试经典面试题-81.搜索旋转排序数组II
    解法都在代码里,不懂就留言或者私信,这个题目一定要注意重复元素的情况shpublicstaticbooleansearch(int[]nums,inttarget){/**空数组不可能找到任何数*/if(nums==null||nums.length==0){returnfalse;}/**如果......
  • 【实战指南】使用 Redis 实现 Java 项目中的防重复提交功能:从原理到实战(实战篇)
    文章目录使用Redis实现Java项目中的防重复提交功能1.引言1.1为何需要防重复提交功能1.2重复提交导致的问题1.3引入Redis作为解决方案的一部分2.基础知识2.1Redis简介2.2Java环境搭建2.3环境配置3.理论基础3.1HTTP请求的特点3.2前端表单提交3.3后......
  • 【渗透测试】Vulnhub Hackable II
    渗透环境攻击机:   IP: 192.168.216.129(Kali)靶机:     IP:192.168.216.131靶机下载地址:https://www.vulnhub.com/entry/hackable-ii,711/进行渗透一、获取端口信息该虚拟机导入VMware需要在拯救模式中重新配置一下网卡名称,附上教程,不再赘述:https://blog.csdn......
  • 11 IIC通讯协议
    目录前言一、IIC介绍1.IIC的时序2.使用IIC对从机寄存器的写操作流程3.使用IIC对从机寄存器的读操作流程二、软件实现IIC协议1.GPIO口配置2.IIC开始信号3.IIC结束信号4.发送数据5.接收数据6.接收ACK响应7.发送ACK和NACK响应8.对寄存器进行写处理9.对寄存器进行读处理三、硬件实现II......