数据结构 之 哈希表习题 力扣oj(附加思路版)

news2025/5/23 19:17:00

哈希表用法

哈希表:键 值对

键:可以看成数组下标,但是哈希表中的建可以是任意类型的,建不能重复,可以不是连续的

值:可以看成数组中的元素,值可以重复,也可以是任意类型的数据

#include<iostream>
#include<unordered_map> //无序哈希,
//在哈希表中不一定按照你输入的顺序存储的,是随机存储的但是每次输出的顺序不随机都是一致的
#include<map>  //有序哈希:默认按照键从小到大存储

using namespace std;

int main()
{
	unordered_map<int, int> u_map;
    
	u_map[9]++; //可以使用这种方式计数

	//find() ,find函数的返回值是迭代器,参数是key,
	//如果哈希表中存在键值为key的键值对,返回指向这个键值对的迭代器,否则返回和end()一样的迭代器

	if (u_map.find(79) != u_map.end())
	{
		cout << "找到了" << endl;
	}
	else
	{
		cout << "没找到" << endl;
	}
	return 0;
}

两数之和 

1. 两数之和icon-default.png?t=N7T8https://leetcode.cn/problems/two-sum/

        给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

        你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

        你可以按任意顺序返回答案。

首先创建一个哈希表,利用哈希表的性质键值对解决本题目。利用find函数寻找数组中元素1与target-数组中元素2是否有相等的值。如果相等返回哈希表的键值。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
       map<int,int>m;
       for(int i=0;i<nums.size();i++)
       {
            if(m.find(target-nums[i])!=m.end())
                return {m[target-nums[i]],i};
            else
                m[nums[i]]=i;
       }
       return {};
    }
};

重复元素 

217. 存在重复元素icon-default.png?t=N7T8https://leetcode.cn/problems/contains-duplicate/

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

利用哈希表[ ]计数 

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        map<int,int>m;
        for(int i=0;i<nums.size();i++)
        {
            m[nums[i]]++;
            if(m[nums[i]]>=2)
                return true;
        }
        return false;
    }
};

219. 存在重复元素 IIicon-default.png?t=N7T8https://leetcode.cn/problems/contains-duplicate-ii/

        给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

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

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

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

相关文章

GTC 2024大会现场直击!亮点回顾:英伟达如何塑造新工业革命?

会议之眼 快讯 就在北京时间2024年3月19日凌晨4:00-6:00&#xff0c;全球瞩目的英伟达GTC &#xff08;GPU技术大会&#xff09;2024大会在美国加州圣何塞会议中心如期拉开帷幕。这场为期四天的科技盛会以其前沿的人工智能和加速计算技术&#xff0c;吸引了来自世界各地的开发者…

YOLOV1-V9发展历程(1) (V1-V5)

简介 计算机视觉领域包含很多不同的方向&#xff0c;从处理数据的类型上分为图片&#xff0c;视频&#xff0c;点云&#xff0c;在2D图像的任务中再细分就分为单目标任务和多目标任务(如上图&#xff09;YOLO是用于解决多目标检测问题的计算机视觉算法&#xff0c;相比于多阶段…

PHP反序列化--_wakeup()绕过

一、漏洞原理&#xff1a; 二、靶场复现: 进入靶场&#xff0c;分析源代码&#xff1a; <?php error_reporting(0); class secret{var $fileindex.php;public function __construct($file){$this->file$file;}function __destruct(){include_once($this->file);ech…

【C++庖丁解牛】继承的概念及定义 | 继承中的作用域 | 继承与友元继承与静态成员 | 复杂的菱形继承及菱形虚拟继承

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.继承的概念及定义1.1继…

Ant Design 的 Table,设置自动滚动效果,触底返回顶部,悬浮停止滚动, Table的 scrollTo 简单使用。

环境&#xff1a; antdesign 版本号&#xff0c; 5.11 一、实现目标 使用 AntDesign 中 Table的 scrollTo 来设置滚动条的显示位置&#xff0c;达到自动滑动效果。 简单介绍 scrollTo 方法: scrollTo 有三个参数 ({index:number,top:number,key:React.key}), index: 表示…

代码随想录算法训练营第二十五天|● 216.组合总和III ● 17.电话号码的字母组合(JS写法)

216 组合总和Ⅲ 题目链接/文章讲解&#xff1a;https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1wg411873x 方法一&#xff1a;自己写的 自己写的&#xff0c;本题和77很像&#xf…

mozilla ctypes用法了解

参考文档&#xff1a;ctypeshttp://udn.realityripple.com/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes 一、引用 ctypes.jsm方法 Components.utils.import("resource://gre/modules/ctypes.jsm") 二、用法 已知用法1&#xff1a; 结构体的声明ctypes.S…

英特尔生态的深度学习科研环境配置-A770为例

之前发过在Intel A770 GPU安装oneAPI的教程&#xff0c;但那个方法是用于WSL上。总所周知&#xff0c;在WSL使用显卡会有性能损失的。而当初买这台机器的时候我不在场&#xff0c;所以我这几天刚好有空把机器给重装成Ubuntu了。本篇不限于安装oneAPI&#xff0c;因为在英特尔的…

nginx 报Too many open files

nginx 异常报 Too many open files 上周时&#xff0c;nginx已经报 Too many open files 当时把 配置文件调整最大连接65535了&#xff0c;reload 重新加载nginx后不报错了。 cat /proc/14921/limits |grep "Max open file" * soft nofile 65535 * hard nof…

【01】htmlcssgit网络基础知识

一、html&css 防脱发神器 一图胜千言 使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: 0;padding: 0;box-sizing: border-box; }颜色的 alpha 通道 颜色的 alpha 通道标识了色彩的透明度,它是一个 0~1 之间的取值,0 标识完全透明,1…

vue2(vue3也可以使用)移动端h5网页实现扫一扫功能

一、效果 可以看调起了我们的摄像头&#xff0c;点击允许过后就打开了扫码界面 二、实现过程 1.安装包 zxing/library 2.构建页面 <template><div class"scan"><div class"video-container"><div class"scan-box">&…

图论03-所有可能路径(Java)

3.所有可能路径 题目描述 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从节点 i 可以访问的所有节点的列表&#xff08;即从节点 i 到…

TypeScript(六)条件类型,函数,装饰器

条件类型 TypeScript 中的条件类型是一种高级类型&#xff0c;它使我们根据不同的条件创建更复杂的类型。 TS中的条件类型就是在类型中添加条件分支&#xff0c;以支持更加灵活的泛型 条件类型允许我们根据某个类型的属性是否满足某个条件&#xff0c;来确定最终的类型。 type…

【海贼王的数据航海】排序——冒泡|快速|归并排序|总结

目录 1 -> 交换排序 1.1 -> 冒泡排序 1.1.1 -> 代码实现 1.2 -> 快速排序 1.2.1 -> hoare版本 1.2.2 -> 挖坑法 1.2.3 -> 前后指针法 1.2.4 -> 快速排序(递归版) 1.2.5 -> 快速排序(非递归版) 2 -> 归并排序 2.1 -> 归并排序 2.…

泛微 OA - 根据流程 requestid 获取流程中的附件

泛微 OA - 根据流程 requestid 获取流程中的附件 在泛微 OA 流程中&#xff0c;附件是通过加密上传的&#xff0c;如果在第三方系统想要调用 OA 系统获取 OA 附件&#xff0c;暂时没有很好的方法实现。但是可以在本地进行调用&#xff0c;得到附件 url 地址、附件 id、附件上传…

蓝桥杯练习02随机数生成器

随机数生成器 介绍 实际工作中随机数的使用特别多&#xff0c;比如随机抽奖、随机翻牌。通过随机数还能实现很多有趣的效果&#xff0c;比如随机改变元素的位置或颜色。 本题需要在已提供的基础项目中使用JS知识封装一个函数&#xff0c;该函数可以根据需要&#xff0c;生成指…

01. 【Android教程】系统背景及结构概述

1. Android 的历史 Android 一词的本意指“人形机器人”&#xff0c;安迪•鲁宾 (Andy Rubin) 在 2003 年以此名创办了 Android 公司并开始召集团队研发 Android 系统。后于 2005 年被 Google 收购&#xff0c;安迪•鲁宾随后任 Google 工程部副总裁&#xff0c;继续负责 Andr…

数据可信流通:从运维信任到技术信任

1.数据可信流通概念 "数据可信流通"通常指的是确保数据在不同系统、应用程序或者组织之间的传输和交换过程中的可信性、完整性和安全性。在数据流通的过程中&#xff0c;确保数据的真实性、完整性和保密性是非常重要的&#xff0c;尤其是涉及到敏感信息或者重要数据…

大数据开发--01.初步认识了解

一.环境准备 1.使用虚拟机构建至少三台linux服务器 2.使用公有云来部署服务器 二.大数据相关概念 大数据是指处理和分析大规模数据集的一系列技术、工具和方法。这些数据集通常涉及海量的数据&#xff0c;包括结构化数据&#xff08;如关系型数据库中的表格&#xff09;以及…

Verdaccio部署及基础使用

1. Verdaccio 简介 Verdaccio&#xff0c;是一个轻量级的 npm 私有仓库的开源解决方案。npm是一个基于http的协议&#xff0c;用来存放软件包并且维护版本和依赖&#xff0c;利用 http 提供的 url路径 来对软件包进行增删改查。所以 Verdaccio 这款软件的核心就是实现 npm协议…