两数之和(Hash表)[简单]

news2024/12/23 18:52:51

优质博文:IT-BLOG-CN

一、题目

给定一个整数数组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 <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于O(n2)的算法吗?

二、代码

思路:
【1】先获取数组中的第一个元素,通过target - num[i] = x,直接过去x的下标,存在直接返回当前索引和查询到的索引,但需要对[3,3]=6等特殊场景进行处理。
【2】们发现这个题目属于hash表下面的,所以使用hash表来实现。可以用key保存数值,用value在保存数值所在的下标map中的存储结构为{key:数据元素,value:数组元素对应的下表}

在遍历数组的时候,只需要向map去查询是否存在target - num[i] = x中的x,如果存在,就返回value也就是下标和i,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        // 先获取数组中的第一个元素,通过 target - num[i] = x, 直接过去x的下标,存在直接返回,需要对[3,3]相同的做特殊处理。
        // 我们发现这个题目属于 hash表下面的,所以使用hash表来实现。可以用key保存数值,用value在保存数值所在的下标
        // map中的存储结构为 {key:数据元素,value:数组元素对应的下表}
        int[] res = new int[2];
        Map<Integer,Integer> map = new HashMap();
        for (int i = 0; i < nums.length; i++) {
            int x = target - nums[i];
            if (map.containsKey(x)) {
                res[0] = map.get(x);
                res[1] = i;
                return res;
            }
            map.put(nums[i], i);
        }
        return res;
    }
}

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

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

相关文章

lv7 嵌入式开发-网络编程开发 12 IP协议与ethernet协议

目录 1 IP协议作用和意义 2 IP数据报首部格式 3 IP数据报分片 4 以太网协议作用和意义&#xff08;链路层&#xff09; 5 练习 1 IP协议作用和意义 IP网的意义 当互联网上的主机进行通信时&#xff0c;就好像在一个网络上通信一样&#xff0c;看不见互连的各具体的网络异…

Vue中如何进行分布式搜索与全文搜索(如Elasticsearch)

在Vue中实现分布式搜索与全文搜索&#xff08;使用Elasticsearch&#xff09; 分布式搜索和全文搜索在现代应用程序中变得越来越重要&#xff0c;因为它们可以帮助用户快速查找和检索大量数据。Elasticsearch是一种强大的分布式搜索引擎&#xff0c;它可以用于实现高性能的全文…

文举论金:非农到来!黄金原油全面走势分析策略独家指导

市场没有绝对&#xff0c;涨跌没有定势&#xff0c;所以&#xff0c;对市场行情的涨跌平衡判断就是你的制胜法宝。欲望&#xff01;有句意大利谚语&#xff1a;让金钱成为我们忠心耿耿的仆人&#xff0c;否则&#xff0c;它就会成为一个专横跋扈的主人。空头&#xff0c;多头都…

IEEE802系列协议知识点总结

IEEE 802 协议包含了以下多种子协议。把这些协议汇集在一起就叫IEEE 802 协议集。 (1)IEEE802.1 IEEE 802.1协议提供高层标准的框架&#xff0c;包括端到端协议、网络互连、网络管理、路由选择、桥接和性能测量。 •IEEE 802.1d:生成树协议(Spanning Tree Protocol&#xff0c…

1500*C. Journey(dfs树的遍历数学期望)

解析&#xff1a; dfs遍历树&#xff0c;到达叶结点时累计答案期望值即可。 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int n; double res; vector<int>e[N]; void dfs(int u,int deep,double p,int fa){int t;if(u1) …

【雷达原理】雷达测距原理及实现方法

目录 一、雷达测距原理1.1 基本原理1.2 实现方法1.3 与距离有关的概念 二、MATLAB仿真实验2.1 应用案例2.2 MATLAB代码 一、雷达测距原理 1.1 基本原理 我们知道&#xff0c;电磁波的传播速度为光速 c c c&#xff0c;若雷达与目标之间的距离为 R R R&#xff0c;则雷达发出…

网络爬虫中的代理技术:socks5代理和HTTP代理

网络爬虫是一种非常重要的数据采集工具&#xff0c;但是在进行网络爬虫时&#xff0c;我们经常会遇到一些限制&#xff0c;比如IP封锁、反爬虫机制等&#xff0c;这些限制会影响我们的数据采集效果。为了解决这些问题&#xff0c;我们可以使用代理服务器&#xff0c;其中socks5…

Vue中如何进行自定义图表与可视化图形设计

Vue中如何进行自定义图表与可视化图形设计 在现代Web应用程序开发中&#xff0c;数据可视化图表和图形设计是至关重要的一部分。Vue.js是一个流行的JavaScript框架&#xff0c;它提供了强大的工具来构建交互性强大的用户界面。本文将探讨如何在Vue.js中进行自定义图表和可视化…

好奇喵 | Tor浏览器——访问.onion网址,揭开Dark Web的神秘面纱

前言 在之前的博客中&#xff1a; 1.Surface Web —&#xff1e; Deep Web —&#xff1e; Dark Web&#xff0c;我们解释了表层网络、深层网络等的相关概念&#xff1b; 2.Tor浏览器——层层剥开洋葱&#xff0c;我们阐述了Tor的历史和基本工作原理&#xff1b; 3.Tor浏览器…

Oracle Database Express Edition (XE)配置与部署

获取下载安装包 https://www.oracle.com/cn/database/technologies/xe-downloads.htmlhttps://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html安装.rpm安装包 cd /usr/local/src wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-d…

实时人脸五观检测:基于libfacedetection(CNN模型)

一、前言 随着人工智能技术的不断发展,人脸检测已成为计算机视觉领域的重要应用之一。人脸检测是一种将输入图像中的人脸位置和轮廓提取出来的技术,广泛应用于人脸识别、智能监控、人机交互等领域。利用libfacedetection开源的人脸检测库,实现人脸检测。 libfacedetection…

华为云云耀云服务器L实例评测|SpringCloud相关组件——nacos和sentinel的安装和配置 运行内存情况 服务器被非法登陆尝试的解决

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到各种问题&#xff0c;在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍SpringCloud相关组件——nacos和sentinel的安装和配置&#xff0c;并分析了运行内存情况&#xff0c;此…

osg实现自定义插件读取自定义格式的模型文件到场景

目录 1. 前言 2. 预备知识 3. 工具、原料 4. 代码实现 1. 前言 osg提供了很多插件来读取模型文件到场景中&#xff0c;这些插件支持大约70种格式类型的文件&#xff0c;但现实中的文件是各式各样&#xff0c;osg不可能囊括所有类型文件&#xff0c;当osg不支持某种类型格式…

林沛满-Wireshark的提示

本文整理自&#xff1a;《Wireshark网络分析的艺术 第1版》 作者&#xff1a;林沛满 著 出版时间&#xff1a;2016-02 最近有不少同事开始学习 Wireshark&#xff0c;他们遇到的第一个困难就是理解不了主界面上的提示信息&#xff0c;于是跑来问我。问的人多了&#xff0c;我也…

海洋测绘外业总结(2023年9月)

本次外业大约历时2个多月&#xff0c;中间遇到了多波束噪声、电火花电源箱冒烟、侧扫声纳绞车承重头内部线路中断&#xff0c;连接拖鱼的硫化头烧坏问题。 1、多波束噪声的问题 在外业采集过程中&#xff0c;EM2040D多波束水体图呈现了明显三段&#xff0c;意思就是&#xff…

SSM 注解配置方式整合

文章目录 Bean注解使用注解方式代替 web.xml 文件Spring注解方式整合Mybatis事务管理器配置请求与响应EnableWebMvc 注解REST 风格RestControllerComponentScan静态资源放行表现层数据封装EnableAspectJAutoProxy&#xff08;AOP注解方式&#xff09;AOP 通知获取数据&#xff…

AUTOSAR COM模块框架梳理

框架&#xff1a; COM的功能主要就是两个&#xff1a; 把IPDU内的signal提取出来提供给SWC使用&#xff0c;把SWC发送的signal拷贝到IPDU buffer内 所以&#xff0c;COM的关键字是 signal, signal group, IPDU, IPDU group Signal group 是为了保证 Complex Data Types 的数…

NodeMCU ESP8266开发流程详解(图文并茂)

文章目录 整体架构打开软件setuploop 连接开发板CP2102版本CH340版本 下载结论 整体架构 NodeMCU ESP8266基于Arduino IDE的开发相对来说还是比较容易上手的&#xff0c;我们基本需要以下几个东西&#xff1b; 一台安装好Arduino IDE的PC&#xff0c;并且已经部署环境&#x…

unity脚本_transform父子物体

运行 就没有父子关系了 当我们需要设置父物体时 通常我们用方式二 说明&#xff1a; 参数一&#xff1a;父物体 参数二&#xff1a;是否保留世界坐标的 位置 角度 缩放 信息 true 会保留 世界坐标系下的状态 和 父物体 进行计算 得到本地坐标系信息 false 不会保留 会直…

点餐小程序实战教程04-用户注册

我们上一篇讲解了自定义方法以及生命周期函数的概念&#xff0c;本节我们讲解一下数据源操作的方法。 1 查询单条数据 在我们的业务逻辑里&#xff0c;是要根据用户的登录信息来去数据源获取数据&#xff0c;根据返回结果来判断是否注册过。这里就涉及到要如何过滤数据的问题…