哈希表【2】

在这里插入图片描述

文章目录

    • 🍈217. 存在重复元素
      • 🍌1. 题目
      • 🍏2. 算法原理
      • 🍓3. 代码实现
    • 🎃219. 存在重复元素 II
      • 🎄题目
      • 🎆算法原理
      • 🧨代码实现

🍈217. 存在重复元素

🍌1. 题目

题目链接:217. 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false

示例 1:

输入:nums = [1,2,3,1]
输出:true

示例 2:

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

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

提示:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

🍏2. 算法原理

这题找重复元素,当然了,可以直接暴力枚举,看看有没有相同的元素。时间复杂度为O(N2)。

力扣的简单题,基本上都可以使用暴力解法。
但是有一点,要看这个数据量,比如这个题目的数据量范围为[1,10^5],O(N2)大概率超时。这里我没试,想试的可以自己试试。

快速查找元素,哈希表在行,遍历数组,看看是否有元素在哈希表中,没有就丢进去,继续遍历;有就直接返回,时间复杂度为O(N)。

这些不在乎下标,只需要可以key值,所以用unordered_set即可

🍓3. 代码实现

class Solution {
public:bool containsDuplicate(vector<int>& nums){unordered_set<int> hash;for(auto e : nums){if(hash.count(e))   return true;else    hash.insert(e);}return false;}
};

运行结果:

image-20231205161734296

🎃219. 存在重复元素 II

🎄题目

题目链接:219. 存在重复元素 II

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 ij ,满足 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 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • 0 <= k <= 105

🎆算法原理

这题和上面这题类似,只不过需要记录下标,看看是否两个相同元素的下标差的绝对值是否<=k,哈希表里面存元素和对应的下标<nums[i],i>

这里可能有多个相同的值,涉及到覆盖,这里不用担心,直接覆盖即可。
因为要求是<=k,隔得越近越小

image-20231205163908007

🧨代码实现

class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k){unordered_map<int, int> hash;for(int i=0; i<nums.size(); i++){if(hash.count(nums[i])){if(abs(hash[nums[i]] - i) <= k) return true;   }hash[nums[i]] = i;}return false;}
};

运行结果:
image-20231205162746624


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

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

相关文章

JFrog----基于Docker方式部署JFrog

文章目录 1 下载镜像2 创建数据挂载目录3 启动 JFrog服务4 浏览器登录5 重置密码6 设置 license7 设置 Base URL8 设置代理9 选择仓库类型10 预览11 查看结果 1 下载镜像 免费版 docker pull docker.bintray.io/jfrog/artifactory-oss体验版&#xff1a; docker pull releas…

LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

Debian 终端Shell命令行长路径改为短路径

需要修改bashrc ~/.bashrc先备份一份 cp .bashrc bashrc.backup编辑bashrc vim ~/.bashrc可以看到bashrc内容为 # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples# If…

道可云元宇宙每日资讯|潍坊市元宇宙产业发展座谈会召开

道可云元宇宙每日简报&#xff08;2023年12月5日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 元宇宙数字内容创作大赛在璧山区举行 3日下午&#xff0c;梦界元境杯元宇宙数字内容创作大赛、第十四届蓝桥杯大赛专项赛颁奖典礼在重庆市璧山区举行。 本次大赛&am…

微信小程序网络请求二次封装

在微信小程序中&#xff0c;网络请求操作是非常频繁的&#xff0c;这样导致重复的代码太多了&#xff0c;防止浪费一些不必要的时间&#xff0c;所以&#xff0c;在项目搭建之初&#xff0c;请封装好一切可以封装的代码。 首先配置一个基地址&#xff1a; export default {ho…

基于FPGA的数字时钟设计与实现(含源码)

随着数字电子技术的不断发展&#xff0c;基于FPGA&#xff08;现场可编程门阵列&#xff09;的数字时钟设计方案逐渐成为了一种流行的选择。本篇博客将详细介绍如何利用FPGA实现一个简单的数字时钟&#xff0c;涉及到分频器、数码管驱动、时分秒计数、三八译码器和扫描数码管等…

禅道v11.6 基于linux环境下的docker容器搭建的靶场

一、环境搭建 linux环境下的 在docker环境下安装禅道CMS V11.6 docker run --name zentao_v11.6 -p 8084:80 -v /u01/zentao/www:/app/zentaopms -v /u01/zentao/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 -d docker.io/yunwisdom/zentao:v11.6二、常见问题 1.删除…

Swing程序设计详解(二)

一 文件标签组与图标 在Swing程序设计中&#xff0c;标签(JLabel)被用于显示文本、图标等内容。在Swing应用程序的用户系面中&#xff0c;用户能够通过标签上的文本、图标等内容获得相应的提示信息。 1.1 JLable标签 标签(JLabel)的父类是JComponent类。虽然标签不能被添加…

Canal笔记:安装与整合Springboot模式Mysql同步Redis

官方文档 https://github.com/alibaba/canal 使用场景 学习一件东西前&#xff0c;要知道为什么使用它。 1、同步mysql数据到redis 常规情况下&#xff0c;产生数据的方法可能有很多地方&#xff0c;那么就需要在多个地方中&#xff0c;都去做mysql数据同步到redis的处理&…

在微信小程序中如何改变默认打开的页面

在微信小程序中&#xff0c;在我们编写页面的时候&#xff0c;可能会在重新渲染的时候导致页面跳转到默认打开的页面上&#xff0c;为了提升用户的一个体验&#xff0c;我们可以设置一些内容来修改小程序默认打开的页面&#xff0c;提升开发者的开发体验。 当我们打开一个微信…

nodejs微信小程序+python+PHP在线购票系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

某60区块链安全之JOP实战二学习记录

区块链安全 文章目录 区块链安全Jump Oriented Programming实战二实验目的掌握对EVM逆向能力实验环境实验工具实验原理实验内容Jump Oriented Programming实战二 实验步骤Jump Oriented Programming实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约中中Jum…

MyBatis 常见面试题

目录 1.MyBatis——概述1.1.什么是 ORM 框架&#xff1f;1.2.✨谈谈对 MyBatis 的理解。1.3.使用 MyBatis 相对于直接使用 SQL 有哪些优点&#xff1f;1.4.MyBatis 有什么优缺点&#xff1f;1.5.✨MyBatis 的分层结构是什么样的&#xff1f;1.6.✨MyBatis 的执行流程是什么样的…

机器学习实验一:线性回归

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…

12、pytest上下文友好的输出

官方实例 # content of test_assert2.py import pytestdef test_set_comparison():set1 set("1308")set2 set("8035")assert set1 set2def test_dict_comparison():dict_1 {name:陈畅,sex:男}dict_2 {name:赵宁,sex:女}assert dict_1 dict_2def tes…

今日心得:多总结多探索,多于他人沟通,思想观点碰撞

今日在工作中获得了一些新的体验和感悟&#xff0c;使我深刻认识到不断总结和探索的重要性。 通过反思和总结&#xff0c;我能够更好地理解自己的行为和决策&#xff0c;发现自己的优点和不足&#xff0c;从而更好地规划未来的行动。 在人生的旅途中&#xff0c;我们不断地遇到…

Flask项目Day1,Flask常见第三方拓展包

拉项目 git clone https://gitee.com/hahaguai007/python-flask-mysql.git git clone 项目地址运行后即可获取项目 2.创建数据库 在MySQL中创建一个数据库&#xff0c;名字自己定&#xff0c;然后修改RealProject\settings.py里的SQLALCHEMY_DATABASE_URI&#xff0c;格式为 …

第18章 C++11标准库(STL)

STL定义了强大的、基于模板的、可复用的组件&#xff0c;实现了许多通用的数据结构及处理这些数据结构的算法。其中包含三个关键组件——容器&#xff08;container&#xff0c;流行的模板数据结构&#xff09;、迭代器&#xff08;iterator&#xff09;和算法&#xff08;algo…

动态规划求解 fibonacci 数列

动态规划: 动态规划的基本思想是&#xff1a;将原问题拆分为若干子问题&#xff0c;自底向上的求解。是自底向上的求解&#xff0c;即是先计算子问题的解&#xff0c;再得出原问题的解。 思路: 创建一个数组&#xff0c;大小为n1&#xff0c;用于存储斐波那契数列的值。数组的…

maven-profile

指定profile生效的几种方式 maven中profile的使用详解_maven profile_2021不再有雨的博客-CSDN博客 【Maven】【翻译】3、Profiles文件_maven的profiles文件是什么-CSDN博客 查看当前生效的profile mvn help:active-profiles 比如有些是用activeProfiles在pom中指定的&…