Leetcode——给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。(java语言)

2023-11-09

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

这题与之前有说过类似的题,附上链接如下。

剑指offer——输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

这两道题的差异在于,原数组是有序和无序的问题。当数组有序递增时,我们可以使用夹逼的方法去得到角标。那这道题是否可以沿用之前的方法呢? 我先使用 Arrays中发sort方法将数组排序,然后再使用夹逼法去确定角标呢?很明显不太可行,当排序完之后的数组的下角标变化了,而本题是需要返回下角标的值的。

解题思路:已知两个数的和target,肯定是遍历数组nums,判断nums[i] = k时,nums数组中是否存在nums[j] = target - k,然后返回i,j的值即可。要想查找nums数组中是否含有target-k的值,类似的查找,我们可以使用查找复杂度为o(1)的hash表,而返回的是数组的角标,使用key-value键值对,key为nums[i],value为i,所以可以使用hashmap。

代码如下:

   private static int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer>  hashMap = new HashMap<>();
        int[] index = new int[2];
        for (int i = 0; i < nums.length; i++) {
            if (hashMap.containsKey(target-nums[i]))
            {
                index[0] = hashMap.get(target-nums[i]);
                index[1] = i;
            }
            else {
                hashMap.put(nums[i],i);
            }
        }
        return index;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode——给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。(java语言) 的相关文章

随机推荐

  • 目标检测数据集PASCAL VOC笔记

    PASCAL VOC 数据集的应用领域有Object Classification Object Detection Object Segmentation Human Layout Action Classification等 它的常用版
  • Acwing 116. 飞行员兄弟

    枚举所有开关的状态 0 2 16 1 16位二进制数 若某一位为1表示按一下 为0表示不按 按照该方案 对所有灯泡进行操作 所在行 所在列全部按一下 判断灯泡是否全亮 如果全亮的话 记录方案 include
  • 美团客户端技术团队招人啦

    非广告哈 帮好友发一则招聘 美团客户端团队在北京招人了 性能优化 基础组件相关的岗位都有 在看机会的或者想了解一下的 都可以通过文章最后面的联系方式进行联系 或者私信我 我拉个群你们细聊 想必大家都看过美团技术团队的博客 美团技术团队 1
  • SQL中DML语句(数据操作语言)

    表示数据操作语言 凡是对表当中的数据进行增删改的都是DML 目录 insert 插入数据 update 修改数据 delete 删除数据 insert 插入数据 语法格式 insert into 表名 字段名1 字段名2 字段名3 valu
  • 如何用burpsuite进行攻击

    一 使用Burpsuite进行攻击 1 第一步打开burpsuite 2 第二部点击Repeater 3 第三步点击粉笔形状的按钮 4 输入要攻击目标的ip地址与端口号 5 添加攻击报文 进行攻击 6 查看响应结果 完整界面展示如下 注意
  • 今日头条2017校招(出题数目)

    题目描述 头条的2017校招开始了 为了这次校招 我们组织了一个规模宏大的出题团队 每个出题人都出了一些有趣的题目 而我们现在想把这些题目组合成若干场考试出来 在选题之前 我们对题目进行了盲审 并定出了每道题的难度系数 一场考试包含3道开放
  • 使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发

    使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile KMM 开发 文章中探讨了 Google 提供的应用架构指南在多平台上的实现 通过共享视图模型 View Models 和共享 UI 状态 UI St
  • Python3 面向对象

    文章目录 面向对象基础 类及类的定义 对象的创建 成员变量 定义格式一 常用 定义格式二 不常用 区别 成员方法 定义格式一 定义格式二 init 方法 str 方法 成员方法调成员 成员 方法 调成员 变量 成员 方法 调成员 方法 手机
  • 【WebSocket】WebSocket使用,看这篇就行

    一 WebSocket连接的建立 消息的接收和回复 当涉及到WebSocket框架的深度使用时 一个流行的选择是使用Java的Spring框架来实现 下面是一个基本的示例 演示了如何使用Spring WebSocket框架进行深度使用 首先
  • 经纬度绘图_Python气象绘图教程(七)——Cartopy

    Python地理信息库包 Cartopy 一 简介 在前面的教程中 我们已经讲解了常用的二维型数据的可视化方法 但是在日常研究中 由于大气科学属于地学系统 和地球地理信息的结合十分密切 大多数时间 需要在图形中添加地理信息 作为胶水语言 在
  • 第九章 numpy之线性代数+练习题

    线性代数 Numpy 定义了 matrix 类型 使用该 matrix 类型创建的是矩阵对象 它们的加减乘除运算缺省采用矩阵方式计算 因此用法和Matlab十分类似 但是由于 NumPy 中同时存在 ndarray 和 matrix 对象
  • 大数据系统及分析

    IDC将大数据技术定义为 为更经济地从高频率的 大容量的 不同结构和类型的数据中获取价值而设计的新一代架构和技术 大数据的关键在于种类繁多 数量庞大 使用传统的数据分析工具无法在可容忍的时间内处理相应的数据 大数据分析主要涉及两个不同的领域
  • 单片机原理及应用复习

    关于这个复习的资源 或者网址 点击 第一章 单片机的基础知识 1 什么是单片机 特点 将通用微型计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统 嵌入式系统 用于解决小型被控对象的智能化问题 SCM或MCU 组成 特点 体积小
  • 工作中遇到的关于配置问题

    工作中遇到的问题 想记录一下 一个程序员小白每天遇到的问题 1 创建了一个Maven的web工程 但是启动一直是404 原服务器未能找到目标资源 解决办法 选择deployment 点击加号选择war格式就OK啦 目录里面无法创建类 解决办
  • postman批量请求post

    1 首先建立一个collection文件夹 2 建立一个post请求 3 建立一个csv文件 用excel转换过来 由于最后一行老是有换行符 r 所以加一行数据 执行错了
  • Linux01 一 Shell与命令执行

    Shell 是在操作系统内核的基础上编写的程序 也是一种脚本语言 Shell 为用户提供了操作界面 让用户高效安全地访问 Linux 内核 执行命令 command options parameter1 parameter2 command
  • phpstorm 配置 支持golang编辑

    https blog csdn net miao0916 article details 55045235
  • MarkDown学习笔记 【第1课:2月13日_随便学点小招数】

    今天在家跟儿子学习如何使用Markdown 很有意思的软件 立马觉得要小小得瑟一下 呵呵 MarkDown学习笔记 第1课 2月13日 随便学点小招数 lt 1 标题 gt 标题采用 空格 可标识1 6级 分别是 Tips 空格很重要 lt
  • 【C++】STL常用算法

    这篇博客主要用来记录学习到的STL中的常用算法和它们的使用方法 目录 遍历算法 1 for each 2 transform 查找算法 1 find 2 find if 3 adjancent find 4 binary search 5
  • Leetcode——给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。(java语言)

    题目 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 示例 给定 nums 2 7 11 1