灵感来源 

- 保持更新,努力学习

- python脚本学习

存在重复元素 II

解题思路

这个问题可以通过哈希表来高效解决。具体思路如下:

  1. 使用哈希表记录元素最后一次出现的位置:遍历数组,用一个哈希表存储每个元素的最后一次出现的索引。
  2. 检查索引差:对于每个元素,如果它已经在哈希表中存在,计算当前索引与哈希表中存储的索引的差值。如果这个差值小于等于给定的 k,则返回 True
  3. 更新哈希表:无论元素是否已经存在于哈希表中,都更新它的索引为当前索引。这样可以确保哈希表中存储的是元素最后一次出现的位置,从而使得后续的检查能够得到最小的索引差。

这种方法的时间复杂度是 O (n),其中 n 是数组的长度,因为只需要遍历一次数组。空间复杂度是 O (min (n, k)),因为哈希表中最多存储 k+1 个元素。

class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:# 用于存储元素及其最后一次出现的索引num_dict = {}for i, num in enumerate(nums):# 如果元素已经在字典中,检查索引差if num in num_dict and i - num_dict[num] <= k:return True# 更新元素的最后一次出现的索引num_dict[num] = ireturn False

逐行解释

class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:# 创建一个字典,用于存储每个元素及其最后一次出现的索引位置num_dict = {}# 遍历数组中的每个元素及其索引for i, num in enumerate(nums):# 检查当前元素是否已经在字典中,并且当前索引与上次出现的索引之差 <=kif num in num_dict and i - num_dict[num] <= k:return True  # 找到满足条件的重复元素,返回True# 更新字典中该元素的索引为当前索引(无论是否已存在,确保记录最新位置)num_dict[num] = i# 遍历结束后仍未找到满足条件的重复元素,返回Falsereturn False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/908759.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/908759.shtml
英文地址,请注明出处:http://en.pswp.cn/news/908759.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Vue3 + Element Plus 实现的智能题目生成页面设计思路

在本篇文章中&#xff0c;我将分享一个基于 Vue3 Element Plus 构建的「智能题目生成页面」的实现思路与设计理念。该页面作为在线学习平台的一部分&#xff0c;核心功能是&#xff1a;用户上传学习资料&#xff0c;AI 自动为其生成定制化题目。以下将从页面风格、功能模块、交…

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…

《P1801 黑匣子》

题目描述 Black Box 是一种原始的数据库。它可以储存一个整数数组&#xff0c;还有一个特别的变量 i。最开始的时候 Black Box 是空的&#xff0e;而 i0。这个 Black Box 要处理一串命令。 命令只有两种&#xff1a; ADD(x)&#xff1a;把 x 元素放进 Black Box; GET&#x…

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…

Server - 使用 Docker 配置 PyTorch 研发环境

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/148421901 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 建议使…

HarmonyOS5.0——CodeGenie:鸿蒙生态的AI编程革命​

​​CodeGenie&#xff1a;鸿蒙生态的AI编程革命​​ 华为推出的 ​​CodeGenie​​ 是集成于 DevEco Studio 的 AI 辅助编程工具&#xff0c;专为 HarmonyOS 应用开发设计。它通过深度优化 ArkTS 和 C 语言的代码生成能力&#xff0c;显著提升开发效率&#xff0c;降低鸿蒙生…

大模型模型部署和暴露接口

创建环境 激活案件 安装相关依赖 conda create -n fastApi python3.10 conda activate fastApi conda install -c conda-forge fastapi uvicorn transformers pytorch pip install safetensors sentencepiece protobuf 新建文件夹 mkdir App cd App touch main.py 复制代码…

Redis初入门

Nosql&#xff1a;Not-Only SQL&#xff08;泛指非关系型数据库&#xff09;&#xff0c;作为关系型数据库的补充 作用&#xff1a;应对基于海量用户和海量数据前提下的数据处理问题 redis&#xff1a;C语言开发的一个开源的高性能键值对数据库 特征&#xff1a; 1、数据之…

【原神 × 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密!

【原神 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密! 作者:星之辰 标签:#原神 #二叉树 #天赋树 #任务分支 #圣遗物强化 #算法科普 发布时间:2025年6月 总字数:6000+ 一、引子:提瓦特大陆的“树型奥秘” 你是否曾留意过《原神》角色面板的天赋树? 升级技能…

C++信息学竞赛中常用函数的一般用法

在C 信息学竞赛中&#xff0c;有许多常用函数能大幅提升编程效率。下面为你介绍一些常见函数及其一般用法&#xff1a; 一、比较函数 1、max()//求出a&#xff0c;b的较大值 int a10,b5,c;cmax(a,b);//得出的结果就是c等于10. 2、min()//求出a&#xff0c;b的较小值 int a1…

Linux【3】-----系统框架概述

系统架构 文件系统 linux一定需要挂载操作系统 一切皆文件 三个文件 引导文件 uboot.bin内核镜像 zImage文件系统镜像 system.img 设备树文件&#xff08;属于内核&#xff09; 应用程序编程 arm中通过软中断实现 各程序的构成 文件I/O 5种I/O模型 阻塞非阻塞信号多…

Tensorrt python api 10.11.0笔记

关于Tensorrt的python api文档阅读翻译加总结 文档源地址 Overview Getting started with TensorRT Installation(安装) 安装可参考:官方地址 Samples 关于样例的内容可参考:样例地址 Operator Documentation 有关更多信息&#xff08;包括示例&#xff09;&#xff0…

电镀机的阳极是什么材质?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;点击加入&#xff09;里的学员问&#xff1a;电镀的阳极有什么讲究&#xff1f;什么是可溶性阳极和非可溶性阳极&#xff1f; 什么是可溶性阳极与非可溶性阳极&#xff1f; 可溶性阳极 阳极本身就是…

前段三剑客之JavaScript-02

目录 简介 核心 函数 字符串对象 事件 运算符和控制语句 DOM 正则表达式 BOM JSON 简介 JavaScript由JavaScript语法&#xff0c;DOM和BOM组成 JS中提供了一些输入输出语句&#xff1a; alert(); //浏览器弹出警示框 console.log(); //控制台打印 prompt(); //浏览器…

Qiskit:量子计算模拟器

参考文献&#xff1a; IBM Qiskit 官网Qiskit DocumentationQiskit Benchpress packageQiskit Algorithms package量子计算&#xff1a;基本概念常见的几类矩阵&#xff08;正交矩阵、酉矩阵、正规矩阵等&#xff09;Qiskit 安装指南-博客园使用Python实现量子电路模拟&#x…

【Elasticsearch】Elasticsearch 核心技术(二):映射

Elasticsearch 核心技术&#xff08;二&#xff09;&#xff1a;映射 1.什么是映射&#xff08;Mapping&#xff09;1.1 元字段&#xff08;Meta-Fields&#xff09;1.2 数据类型 vs 映射类型1.2.1 数据类型1.2.2 映射类型 2.实际运用案例案例 1&#xff1a;电商产品索引映射案…

serv00 ssh登录保活脚本-邮件通知版

适用于自己有服务器情况&#xff0c;ssh定时登录到serv00&#xff0c;并在登录成功后发送邮件通知 msmtp 和 mutt安装 需要安装msmtp 和 mutt这两个邮件客户端并配置&#xff0c;参考如下文章前几步是讲配置这俩客户端的&#xff0c;很简单&#xff0c;不再赘述 用Shell脚本实…

前端 Electron 桌面应用学习笔记

前端 Electron 桌面应用学习笔记 介绍Electron是什么?为什么选择Electron?创建你的第一个桌面应用程序启动项目运行结果截图打开调试面板方法生命周期函数常用配置配置窗口标题配置小图标隐藏菜单栏关闭调试面板是否可以使用Node.js隐藏 Electron 标题、小图标和菜单栏获取窗…