当前位置: 首页 > news >正文

【LeetCode每日一题】——219.存在重复元素II

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 哈希表

二【题目难度】

  • 简单

三【题目编号】

  • 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:

    • 输入:nums = [1,2,3,1,2,3], k = 2
    • 输出:false

六【题目提示】

  • 1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
  • − 1 0 9 < = n u m s [ i ] < = 1 0 9 -10^9 <= nums[i] <= 10^9 109<=nums[i]<=109
  • 0 < = k < = 1 0 5 0 <= k <= 10^5 0<=k<=105

七【解题思路】

  • 本题首先想到的思路就是暴力解法,但是这种解法会超时,所以我们想到了哈希表
  • 将元素入哈希表,当前元素值为哈希表的key,索引下标为val,如果再次遇到了相同的元素,我们就取出之前存入的val,求其差值,如果差值小于等于k,那么就返回true
  • 如果遍历整个数组都没有想要的结果,那么就返回false
  • 其实本题本质上是维护一个最近的索引下标

八【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度

九【代码实现】

  1. Java语言版
class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {HashMap<Integer, Integer> map = new HashMap<>();for(int i = 0;i < nums.length;i++){if(map.containsKey(nums[i])){if(Math.abs(map.get(nums[i]) - i) <= k){return true;}}map.put(nums[i], i);}return false;}
}
  1. C语言版
struct HashEntry
{int key;int val;UT_hash_handle hh;
};void hashAddItem(struct HashEntry **obj, int key, int val)
{struct HashEntry* pEntry = (struct HashEntry*)malloc(sizeof(struct HashEntry));pEntry->key = key;pEntry->val = val;HASH_ADD_INT(*obj, key, pEntry);
}struct HashEntry* hashFindItem(const struct HashEntry** obj, int key)
{struct HashEntry* pEntry = NULL;HASH_FIND_INT(*obj, &key, pEntry);return pEntry;
}void hashFreeAll(struct HashEntry** obj)
{struct HashEntry *curr, *next;HASH_ITER(hh, *obj, curr, next){HASH_DEL(*obj, curr);free(curr);}
}bool containsNearbyDuplicate(int* nums, int numsSize, int k)
{struct HashEntry* map = NULL;for(int i = 0;i < numsSize;i++){if(hashFindItem(&map, nums[i]) != NULL){if(i - hashFindItem(&map, nums[i])->val <= k){hashFreeAll(&map);return true;}}hashAddItem(&map, nums[i], i);}hashFreeAll(&map);return false;
}
  1. Python语言版
class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:map = {}for i, num in enumerate(nums):if num in map:if i - map[num] <= k:return Truemap[num] = ireturn False
  1. C++语言版
class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> map;for(int i = 0;i < nums.size();i++){if(map.count(nums[i]) != 0){if(i - map[nums[i]] <= k){return true;}}map[nums[i]] = i;}return false;}
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

相关文章:

【LeetCode每日一题】——219.存在重复元素II

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 219.存在重复元素II 四【题目描述】 给你一个…...

篇六:适配器模式:让不兼容变兼容

篇六&#xff1a;“适配器模式&#xff1a;让不兼容变兼容” 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/ 另外有2本不错的关于设计模式的资料&#xff0c…...

【云原生】Docker-compose中所有模块学习

compose模块 模板文件是使用 Compose 的核心&#xff0c;涉及到的指令关键字也比较多。但大家不用担心&#xff0c;这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml&#xff0c;格式为 YAML 格式。 version: "3&quo…...

广义积分练习

前置知识 无穷限积分瑕积分 练习 计算 ∫ 0 ∞ 1 x ( 1 x ) d x \int_0^{\infty}\dfrac{1}{\sqrt x(1x)}dx ∫0∞​x ​(1x)1​dx 解&#xff1a; x 0 \qquad x0 x0为瑕点 \qquad 原式 lim ⁡ a → 0 lim ⁡ b → ∞ ∫ a b 1 x ( 1 x ) d x lim ⁡ a → 0 lim ⁡…...

element-ui树形表格,左边勾选,右边显示选中的数据-功能(如动图)

功能如图 功能需求 表格树形表格勾选数据&#xff0c;右边显示对应勾选的数据内容&#xff0c;选中客户&#xff0c;自动勾选所有的店铺(子级)&#xff0c;选中其中一个店铺&#xff0c;自动勾选上客户(父级)&#xff0c;同时会存在只有客户&#xff08;下面没有子级的情况&am…...

Android数字价格变化的动画效果的简单实现

原理&#xff1a;使用ValueAnimator属性动画类实现&#xff0c;它通过值的改变手动设置对象的属性值来实现动画效果。直接贴代码&#xff1a; public static void doNumberAnim(TextView tvPrice, float startNumber, float endNumber) {ValueAnimator animator ValueAnimato…...

Win10无法投影关闭3D模式

Win10不小心开启了3D模式&#xff0c;插上投影仪就一闪一闪的&#xff0c;无法正投影 解决办法&#xff1a; 1. 打开注册表工具regedit&#xff0c;删除以下注册表&#xff0c;重启电脑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configurat…...

FFmpeg 编码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力&#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API&#xff0c;将avcodec_encode_audio2(…...

05如何做微服务架构设计

一句话导读 微服务架构设计方法有&#xff1a;领域驱动设计DDD&#xff08;Domain-Driven-Design&#xff09;、12因素应用&#xff08;12-Factor App&#xff09;、事件驱动架构EDA&#xff08;Event-Driven Architecture&#xff09;等等&#xff0c;但是他们都必须遵守微服务…...

安卓开发问题记录:需要常量表达式

问题原因 写代码过程中爆出这个错误&#xff1a;需要常量表达式&#xff0c;定位到switch。 解决方法&#xff1a;把switch case&#xff0c;改成if else 错误源代码&#xff1a; public void onClick(View view) {switch (view.getId()) {case R.id.iv_code:RxCaptcha.build(…...

回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测

回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测预测效果基本介绍研究内容程序设计参考资料…...

配置root账户ssh免密登录并使用docker-machine构建docker服务

简介 Docker Machine是一种可以在多种平台上快速安装和维护docker运行环境&#xff0c;并支持多种平台&#xff0c;让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群的工具。 使用docker-machine命令&#xff0c;可以启动、审查、停止、重启托管的docker 也可以…...

【力扣周赛】第357场周赛

【力扣周赛】第357场周赛 2810. 故障键盘题目描述解题思路 2811. 判断是否能拆分数组题目描述解题思路 2810. 故障键盘 题目描述 描述&#xff1a;你的笔记本键盘存在故障&#xff0c;每当你在上面输入字符 ‘i’ 时&#xff0c;它会反转你所写的字符串。而输入其他字符则可以…...

多线程案例(4)-线程池

文章目录 多线程案例四四、线程池 大家好&#xff0c;我是晓星航。今天为大家带来的是 多线程案例-线程池 相关的讲解&#xff01;&#x1f600; 多线程案例四 四、线程池 线程池是什么 虽然创建线程 / 销毁线程 的开销 想象这么一个场景&#xff1a; 在学校附近新开了一家…...

【数据结构OJ题】轮转数组

原题链接&#xff1a;https://leetcode.cn/problems/rotate-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 1. 方法一&#xff1a;暴力求解&#xff0c;将数组的第一个元素用临时变量tmp存起来&#xff0c;再将数组其他元素往右挪动一步&…...

现代C++中的从头开始深度学习:【4/8】梯度下降

一、说明 在本系列中&#xff0c;我们将学习如何仅使用普通和现代C编写必须知道的深度学习算法&#xff0c;例如卷积、反向传播、激活函数、优化器、深度神经网络等。 在这个故事中&#xff0c;我们将通过引入梯度下降算法来介绍数据中 2D 卷积核的拟合。我们将使用卷积和上一个…...

Yolov5缺陷检测/目标检测 Jetson nx部署Triton server

使用AI目标检测进行缺陷检测时&#xff0c;部署到Jetson上即小巧算力还高&#xff0c;将训练好的模型转为tensorRT再部署到Jetson 上供http或GRPC调用。1 Jetson nx 刷机 找个ubuntu 系统NVIDIA官网下载安装Jetson 的sdkmanager一步步刷机即可。 本文刷的是JetPack 5.1, 其中包…...

MobaXterm 中文乱码, 及pojie

中文解决方法&#xff1a; 把“连字”去掉&#xff01; MobaXterm网页&#xff0c;可以生成一个授权文件Custom.mxtpro。放在安装目录就可以了 MobaXterm Keygen (husbin.top)http://b70.husbin.top:5000/...

java: 程序包sun.misc不存在

启动失败&#xff0c;rebuild时也报错&#xff1a;java: 程序包sun.misc不存在 问题出在JDK版本上&#xff0c;这个包在JDK9的时候已经被弃用了&#xff0c;这里改回JDK8即可 步骤如下&#xff1a;...

WSL2Linux 子系统(五)

WLS2Linux 子系统编译 Android 上一篇文章中讲解 《WLS2Linux 子系统迁移/恢复》&#xff0c;从C盘迁移到D盘。既可以防止C盘爆红&#xff0c;又可以释放磁盘空间。有更大存储空间意味大有可为&#xff0c;比如说编译Android系统。本文则以开源 firefly Android10代码为例简单…...

从火柴盒到AI:探索MENACE的数字化旅程

在计算机科学的历史中,有许多有趣的实验和发明,其中之一便是由唐纳德米奇(Donald Michie)设计的“火柴盒计算机”(Matchbox Educable Noughts and Crosses Engine,简称MENACE)。这个装置使用了火柴盒和彩色珠子来模拟人工智能,教机器玩井字游戏(Tic-Tac-Toe)。本文将…...

GB/T 4996-2015 或 ISO 8611-1对实木托盘抗压施加3倍的重量测试

关于实木托盘抗压测试中施加“3倍重量”这个做法&#xff0c;它并非标准中的通用要求&#xff0c;而是一种特定场景下的安全系数验证方法。以下是针对“3倍重量”测试的详细解读和执行建议。“3倍重量”测试的目的与定位在托盘的标准检测中&#xff0c;常规的抗压或堆码测试通常…...

用了大半年的免费云服务器,分享真实体验

最近一直在用阿贝云的免费云服务器和免费虚拟主机&#xff0c;整体体验非常不错。服务器性能稳定&#xff0c;响应速度快&#xff0c;完全能满足个人建站、学习测试的需求&#xff0c;而且操作简单&#xff0c;新手也能快速上手。免费虚拟主机的空间足够&#xff0c;搭建个人博…...

SEO_中小企业如何低成本做好SEO?实用方案分享

为什么中小企业需要关注SEO 在当今数字化经济时代&#xff0c;中小企业如果想要在竞争激烈的市场中脱颖而出&#xff0c;关注SEO&#xff08;搜索引擎优化&#xff09;是必不可少的。SEO不仅能够提升网站的搜索引擎排名&#xff0c;还能有效带来更多的潜在客户。许多中小企业在…...

原神帧率解锁终极指南:三步轻松突破60FPS限制

原神帧率解锁终极指南&#xff1a;三步轻松突破60FPS限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》60帧限制感到困扰吗&#xff1f;genshin-fps-unlock是一款专为《…...

OriginPro 2023保姆级教程:三步搞定柱状图+点线图组合,让你的科研图表颜值飙升

OriginPro 2023科研图表优化实战&#xff1a;从基础绘图到期刊级组合图表 科研图表是学术论文的"门面"&#xff0c;一张精心设计的图表往往能让审稿人和读者眼前一亮。OriginPro作为科研绘图领域的标杆工具&#xff0c;其2023版本在图表组合和视觉优化方面带来了诸多…...

Windows和Office激活终极解决方案:KMS_VL_ALL_AIO完全指南

Windows和Office激活终极解决方案&#xff1a;KMS_VL_ALL_AIO完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否厌倦了Windows系统频繁弹出激活提醒&#xff1f;是否因为Office软件…...

突破Cursor限制的5个实用技巧:从原理到实践

突破Cursor限制的5个实用技巧&#xff1a;从原理到实践 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request…...

零基础入门UNet人脸融合:手把手教你搭建本地换脸工具

零基础入门UNet人脸融合&#xff1a;手把手教你搭建本地换脸工具 1. 项目介绍与环境准备 1.1 什么是UNet人脸融合 UNet人脸融合是一种基于深度学习的人脸合成技术&#xff0c;它能够将一张图片中的人脸特征自然地融合到另一张图片上。这项技术在影视特效、数字艺术创作、社交…...

STM32 串口发送中文

一、汉字编码基础 1.1、汉字识别 UTF-8编码特点&#xff1a;汉字通常占3个字节&#xff1b;首字节特征&#xff1a;1110xxxx (0xE0-0xEF)&#xff08;都 > 0x7F&#xff09;&#xff1b;后续字节特征&#xff1a;10xxxxxx (0x80-0xBF)&#xff08;都 > 0x7F&#xff09; …...