Leetcode219. 存在重复元素 II

python【力扣LeetCode算法题库】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 示例 3: 输入: nums = [1,2,3,1,2,3]... 阅读详情

Every day a leetcode

题目来源:219. 存在重复元素 II

解法1:暴力

代码:

class Solution
{
public:
    bool containsNearbyDuplicate(vector<int> &nums, int k)
    {
        int n = nums.size();
        if (n < 2)
            return false;
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < min(n, i + k + 1); j++)
            {
                if (nums[i] == nums[j])
                    return true;
            }
        }
        return false;
    }
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n*k)

空间复杂度:O(1)

解法2:哈希

在这里插入图片描述

我们使用STL unordered_map作为哈希表。

代码:

class Solution
{
public:
    bool containsNearbyDuplicate(vector<int> &nums, int k)
    {
        int n = nums.size();
        if (n < 2)
            return false;
        unordered_map<int, int> umap;
        for (int i = 0; i < n; i++)
        {
            if (umap.find(nums[i]) != umap.end() && i - umap[nums[i]] <= k)
                return true;
            umap[nums[i]] = i;
        }
        return false;
    }
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中n是数组nums的长度。需要遍历数组一次,对于每个元素哈希表的操作时间都是 O(1)。

空间复杂度:O(n),其中n是数组nums的长度。需要使用哈希表记录每个元素的最大下标,哈希表中的元素个数不会超过 n。

解法3:滑动窗口

在这里插入图片描述

代码:

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

// @lc code=start
// class Solution
    // {
    // public:
    //     bool containsNearbyDuplicate(vector<int> &nums, int k)
    //     {
    //         int n = nums.size();
    //         if (n < 2)
    //             return false;
    //         unordered_map<int, int> umap;
    //         for (int i = 0; i < n; i++)
    //         {
    //             if (umap.find(nums[i]) != umap.end() && i - umap[nums[i]] <= k)
    //                 return true;
    //             umap[nums[i]] = i;
    //         }
    //         return false;
    //     }
    // };
class Solution
{
public:
    bool containsNearbyDuplicate(vector<int> &nums, int k)
    {
        int n = nums.size();
        if (n < 2)
            return false;
        unordered_set<int> uset;
        for (int i = 0; i < n; i++)
        {
            if (i > k)
                uset.erase(nums[i - k - 1]);
            if (uset.find(nums[i]) != uset.end())
                return true;
            uset.insert(nums[i]);
        }
        return false;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n)。其中 n 是数组 nums 的长度。需要遍历数组一次,对于每个元素,哈希集合的操作时间都是 O(1)。

空间复杂度:O(k),其中 k 是判断重复元素时允许的下标差的绝对值的最大值。需要使用哈希集合存储滑动窗口中的元素,任意时刻滑动窗口中的元素个数最多为 k+1 个。

HID报告描述符实战解析:从Usage到Item的完整设计流程 本文深入解析了HID报告描述符的设计流程,从核心概念Usage(用途定义)入手,详细阐述了如何通过Item(条目)的三种角色——全局、局部与主干,构建出能被系统正确识别的设备“说明书”。文章以标准USB鼠标和键盘为例进行实战拆解,并介绍了使用Report ID与自定义设备等进阶设计方法,帮助开发者掌握这一实现USB设备即插即用的关键技术。 阅读详情

相关推荐

TOGAF9.2/10 认证基础知识点概览表

(考点解析:业务场景是一种重要的技术,可以在企业架构的各个阶段使用,主要是架构愿景和业务架构,但如果需要,也可以在其他架构域中使用,以直接从业务的高级需求中派生架构的特征。“哪里”可以看作是对相关企业的界定、“为什么”可以被视为组织环境中的关键驱动因素和要素、“谁”是指确定发起人利益相关者和受业务指令影响的其他主要利益相关者,以创建企业架构,并确定他们来自企业的需求和优先级、他们与企业的关系以及彼此之间所需的工作行为。它是业务驱动和业务主导的,它结 合了所有业务线的必要努力,以实现所需的能力。

2302_81497763的博客 2076

Leetcode—— 219.存在重复元素II

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 示例 3: 输入: nu...

suxiaorui的博客 575

OpenCV轮廓匹配实战:5分钟搞定Hu矩形状识别(附完整代码)

本文详细介绍了使用OpenCV进行轮廓匹配的实战技术,重点讲解了Hu矩形状识别在工业质检等领域的应用。通过完整的代码示例和参数调优技巧,帮助开发者在5分钟内实现高效的形状识别,提升工业检测的准确性和效率。

nnn11的博客 675

【力扣】219存在重复元素II

package Leetcode真题分门别类.查找表相关问题; import java.util.HashSet; /** * @Author bennyrhys * @Date 2020-05-24 16:09 * 思路: * 查找表+滑动窗口k+1大小 * * 复杂度: * 时间O(n) * 空间O(k) */ public class _219存在重复元素II { public boolean containsNearbyDuplicate(int[] nums, int

瑞新の博客:bennyrhys 1155

银河麒麟v10-arm SEALOS离线部署k8s集群(v1.22.8)

示例 如果你想保存一个名为 "my_snapshot" 的 etcd 快照到指定的对象路径你可以使用以下命令: sealos etcd save --backupPath /root --name my_snapshot 如果文件名带时间戳:my_snapshot$(date +"%Y%m%d_%H%M%S") 会生成一个形如 20230913_143045 的时间戳。--restorePath string:指定快照恢复目录(默认为 "/opt/sealos/etcd-restore")。

xjudt的博客 3286

Uni-App 使用极光推送完整指南

Uni-App集成极光推送的完整指南:从注册极光账号到代码实现。包含前期准备(获取AppKey、注册厂商账号)、Uni-App配置(插件导入、初始化代码)、高级功能(角标设置、Java后台接口)及常见问题排查。详细说明了推送监听、registrationID获取、消息接收处理等核心功能实现步骤,并提供两种推送接口示例(按平台推送和统一推送)。适合需要在Uni-App项目中实现推送功能的开发者参考。

cyj0919的博客 425

leetcode 219.存在重复元素II

leetcode 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 示...

EngineerHe的博客 1683

C# 从数秒到毫秒:MySQL+Redis百万数据优化实战全解析

在处理百万级数据时,传统单体数据库常面临查询效率低下、数据库负载过高和用户体验差等问题。为解决这些性能瓶颈,可以采用MySQL分库分表、Redis缓存和异步统计的组合策略。 数据库分片:通过水平分表和分库实现,将单表数据分散到多个物理表或数据库实例中,降低单点负载。 Redis缓存:利用Redis缓存高频数据,减少数据库查询压力,提升响应速度。 异步统计:通过消息队列(如RabbitMQ)解耦统计任务,后台处理非实时任务,避免阻塞主流程。 这些优化策略能够显著提升系统性能,确保在高并发和大数据量场景下的稳定

墨夶的博客 852

Leetcode 219. 存在重复元素 II C++

Leetcode 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 示例 3: 输入: nums = [1,2,3,1,2,3], k = 2 输出: false 题

weixin_43750513的博客 329

YOLOv13改进策略【Head】| (独家改进)结合 ICME-2024 中的PPA注意力模块,自研带有注意力机制的小目标检测头

本文记录的是利用PPA (并行补丁感知注意模块)改进YOLOv13的检测头。通过改进传统卷积,形成带有注意力机制的小目标检测头,使模型能够更好地关注小目标的重要信息。HCF-Net: Hierarchical Context Fusion Network for Infrared Small Object Detection采用多分支特征提取策略,通过不同分支提取不同尺度和层次的特征。利用局部、全局和串行卷积分支,对输入特征张量进行处理。通过控制 patch size参数实现局部和全局分支的区分,计算非重叠

Limiiiing的博客 480

基于YOLOv8的铁路轨道异物检测系统设计与实现

目标检测是计算机视觉领域的核心任务之一,旨在识别图像中特定目标的位置和类别。传统方法主要依赖手工特征(如HOG、SIFT等)和分类器(如SVM),而深度学习方法通过卷积神经网络自动学习特征表示,显著提升了检测性能。YOLO(You Only Look Once)系列算法作为单阶段目标检测的代表,以其高效的检测速度著称。YOLOv8是Ultralytics公司于2023年发布的最新版本,在精度和速度上都有进一步提升。

YOLO 574

leetcode 219. 存在重复元素 II 题解

leetcode 219 题解 重要参考文章: c++几乎双百的set解法: 官方解法集锦 收获 本篇题解是针对 leetcode 219题, 进行时间复杂度进行优化的提升。分别应用了以下几点: 用 unordered_set 来进行 k 窗口的构造,可以有效提升时间,能减少 4 ms 运行时间 通过优化 if-else 的条件,优化代码的可读性。 通过更改循环条件, int n = nums.size(); i < n; 替换 i < nums.size() ,能够手动优化时间 4ms 通

u013580493的专栏 277

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

leetcode-219 | 存在重复元素 II

title: leetcode-219 | 存在重复元素 II date: 2019-5-3 15:09:16 comments: true categories: “leetcode” tags: - leetcode 简单难度 - 滑动窗口典型例子 题目描述 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和...

梦否 512

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode第 219 题:存在重复元素 II(C++)

219. 存在重复元素 II - 力扣(LeetCode) 哈希表: class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_map<int, int> m; for(int i = 0; i < nums.size(); ++i){ if(m.count(nums[i])){

zj 353

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode第219题_存在重复元素II

LeetCode 第219题要求判断数组中是否存在两个相同元素,且它们的索引差不超过k。题目难度为简单,提供了两种主要解题方法:滑动窗口结合哈希集合,以及哈希表记录索引。滑动窗口方法通过维护一个大小为k的窗口,利用哈希集合快速检查重复元素,时间复杂度为O(n),空间复杂度为O(min(n, k))。哈希表记录索引方法则通过记录每个元素的最新索引,检查索引差是否满足条件,时间复杂度为O(n),空间复杂度为O(n)。代码实现提供了C#、Python和C++版本,并进行了性能分析。滑动窗口方法在数组长度远大于k时

qq_40263592的博客 1439

力扣经典题目之219. 存在重复元素 II

今天继续给大家分享一道力扣的做题心得今天这道题目是219. 存在重复元素 II,我使用 hashmap 的方法来解题题目如下,题目链接:219. 存在重复元素 II 此题目给我们了一个整数数组 和一个整数 ,需要我们判断数组中是否存在两个 不同的索引 和 ,满足 且 。如果存在,返回 ;否则,返回 。题目不难理解下面是题目需要理解的要点: 要点:满足有一个重复的值并且这两个值的对应的在数组中的索引之差的绝对值要小于一个所给定的值k ,即可判断为为true返回tru

ymr1843762281的博客 938

LeetCode219——存在重复元素II

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/contains-duplicate-ii/description/ 题目描述: 知识点:哈希表、滑动窗口法 思路:滑动窗口法 本题是LeetCode217——存在重复元素的加强版,由于题目要求i和j的绝对...

清风阁 871

LeetCode 219. 存在重复元素 II(Java)

219. 存在重复元素 II 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。 示例 1: 输入: nums = [1,2,3,1], k = 3 输出: true 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cont...

nuts_and_bolts的博客 192

219. 存在重复元素 II【 力扣(LeetCode) 】

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j)

yyh520025的博客 799

leetcode-cpp 219.存在重复元素II

219.存在重复元素II 题目: 链接 leetcode solution: 用unordered_map,其中key值为nums[i],value值为下标,如果map中还没有该元素,则增加,否则比较找的元素下标与当前下标的差绝对值是否大于k code class Solution { public: bool containsNearbyDuplicate(v...

weixin_43255713的博客 268

【题解】【LeetCode】219. 存在重复元素 II

219. 存在重复元素 II 原题传送:LeetCode 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 示例 3: 输入: nums = [1,2,3,1,2,3], k = 2

葑鈊丶 415

LeetCode 219. 存在重复元素 II

目录结构 1.题目 2.题解 2.1滑动窗口 2.2哈希表 1.题目 给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的 绝对值 至多为 k。 示例: 输入: nums = [1,2,3,1], k = 3 输出: true 输入: nums = [1,0,1,1], k = 1 输出: true 输入: nums = [1,2,3,1,2,3], k = 2 输出: false 来...

HarvestWu的博客 203

力扣第219题“存在重复元素 II”

本文详细解读了力扣第219题“存在重复元素 II”,通过使用滑动窗口和哈希表的方法高效地解决了这一问题,并提供了详细的解释和模拟面试问答。希望读者通过本文的学习,能够在力扣刷题的过程中更加得心应手。

10年数据\经营分析经验,现任大厂数据分析负责人 607

Leetcode 每日一题 219.存在重复元素 II

这个问题是一个典型的使用哈希表解决的问题,它考察了我们对哈希表操作的理解和应用。通过维护一个滑动窗口内的元素集合,我们可以有效地检查是否存在满足条件的重复元素。这种方法简洁且高效,是解决这类问题的首选方法。

weixin_73687229的博客 1349

leetcode-219:存在重复元素 II

leetcode-219:存在重复元素 II题目解题方法一:哈希 题目 题目连接 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。 示例 1: 输入:nums = [1,2,3,1], k = 3 输出:true 示例 2: 输入:nums = [1,0,1,1], k = 1 输出:true 示例 3: 输入:nu

菊头蝙蝠的博客 475
上一篇: Leetcode205. 同构字符串
下一篇: Leetcode225. 用队列实现栈
UestcXiye
博客等级 码龄8年 9028粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值