哈希-力扣01两数之和

news/2024/6/17 14:09:45 标签: 哈希算法, leetcode, 算法

题目

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

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

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

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

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

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • 只会存在一个有效答案

思考 

本题是力扣题库中的第一题,解决方法有很多,笔者在这里用一种小于时间复杂度O(n^2),因为涉及到了查找,我们九二一运用我们的算法>哈希算法,本题由于需要下表和元素值要对应,为了查找方便,我们可以将unordered_map中的key存储元素,value存储下表,这样可以实现一一对应,查找目标数与数组元素的差值进行寻找,因为只有一个有效答案,大大简化了问题,下面请根据笔者的代码来理解这道题目。

代码实现

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
    	unordered_map<int,int>mp;//利用undered_map哈希表用于键值配对
    	for(int i=0;i<nums.size();i++){
			auto iter=mp.find(target-nums[i]);//设置迭代器存储对相应值的数据
			if(iter!=mp.end())//如果找到
			    return {iter->second,i};//那么返回iter指向的指,即下表和i对应下表
			mp[nums[i]]=i;//插入该值
		}
		return {};//如果一直找不到返回空
    }
};

总结

本题带我们熟悉了unordered_map的用法,用元素当key用下表当value进行配对,同样压缩了时间并且完成了想要的操作,希望通过本篇再次熟悉哈希,并且掌握哈希寻找元素和配对元素的思想。

尾声

本题是算法>哈希算法的序章,再次采用了unordered_map,希望本篇内容能给你带来益处,如果觉得笔者写的还不错,记得留下你的点赞哦


http://www.niftyadmin.cn/n/5311925.html

相关文章

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》&#xff08;A&#xff09;试题&#xff08;开卷&#xff09; 题目&#xff1a;以某一 web 系统为测试对象&#xff0c;完成以下文档的编写&#xff1a; &#xff08;满分 100 分&#xff09; &#xff08;1&am…

使用lwip的perf进行测速TCP不稳定的一些相关配置项

在使用lwIP的perf工具进行TCP性能测试时&#xff0c;TCP不稳定可能涉及以下配置问题&#xff1a; 缓冲区大小&#xff08;Buffer Size&#xff09;&#xff1a;lwIP中的TCP性能受到发送和接收缓冲区大小的影响。如果缓冲区过小&#xff0c;可能导致数据包丢失或延迟增加&#x…

辞旧岁,赢新篇,创维汽车召开年度会议立足过去,展望未来

为辞旧迎新&#xff0c;再创辉煌&#xff0c;创维汽车于1月4日-5日召开了事业部年度会议。本次会议将23年整体运营情况作出总结并对新一年的发展作出了目标规划。创维集团、创维汽车创始人黄宏生先生&#xff0c;开沃新能源汽车集团执行董事兼首席运营官诸萍女士&#xff0c;创…

spark读sqlserver出现的异常

前言 Spark通过JDBC读取数据之前很早写过一篇博客,本以为所有通过jdbc读取的方式都一样,谁知道这次读sqlserver的时候竟然出现的很多异常,这里把异常的问题进行记录。 测试代码 import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apach…

如何在小米4A刷OpenWRT系统并通过cpolar实现公网访问本地路由器

文章目录 前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理界面4.4 创建公网地址 5. 固定公网地址访问 前言 OpenWRT是一个高度模块化、高度自…

[Kubernetes]5. k8s集群StatefulSet详解,以及数据持久化(SC PV PVC)

前面通过deployment结合service来部署无状态的应用,下面来讲解通过satefulSet结合service来部署有状态的应用 一.StatefulSet详解 1.有状态和无状态区别 无状态: 无状态(stateless)、牲畜(cattle)、无名(nameless)、可丢弃(disposable) 有状态: 有状态(stateful)、宠物(pet)…

OpenHarmony基于HDF简单驱动开发实例

背景 OpenHarmony-3.0-LTSqemu_small_system_demoliteos_aqemu 添加配置 device/qemu/arm_virt/liteos_a/hdf_config/device_info/device_info.hcs device_info 新增&#xff1a; sample_host :: host {hostName "sample_host";sample_device :: device {devic…

Codeforces Round 761 (Div. 2) D2. Too Many Impostors (hard version)(交互+构造 最小次数)

题目 n(6<n<1e4&#xff0c;n是3的倍数)个人&#xff0c;其中k个人是好人&#xff0c;n-k个人是坏人 k是未知的&#xff0c;但保证1/3n<k<2/3n&#xff0c;你可以询问若干次&#xff0c; 每次你可以选择三个不同的人a,b,c&#xff0c;系统告诉你这三个人中好人更…