博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.两数之和
阅读量:3977 次
发布时间:2019-05-24

本文共 1703 字,大约阅读时间需要 5 分钟。

文章目录


一、题目描述

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

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

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

在这里插入图片描述

二、解题思路

可以这样去考虑,借助一个容器,先将数组中的第一个数字放到这个容器中,然后我们循环遍历数组中剩下的每一个数字,然后我们利用判断target和遍历的这个数字的差值是不是存在于我们容器中,或者说是不是和存的这个数相等,如果是就将这个数字返回就行。

三、代码编写步骤

第一步:创建一个map集合,集合是通过键值对的形式存储,既能遍历索引,也能通过索引找到其对应的值

第二步:先将nums集合中的第一个数存进map集合

第三步:循环nums中剩下的值,让每一个值都与target做差值,得到相应的差

第四步:map.containsKey(key)能够判断该key是否存在于map中,存在则返回true。这里如果存在则获取这个值的索引和值

第五步:在第一步存入map的第一个值与所有的值做完差之后,现在要更新map集合中存入的这个值再与nums中剩下的所有值进行判断

四、代码演示

import java.util.HashMap;import java.util.Map;class Solution {
public int[] twoSum(int[] nums, int target) {
int len = nums.length; //创建map集合对象 HashMap
Map = new HashMap
(); //添加nums数组中的第一个元素和索引到Map集合中 Map.put(nums[0],0); for(int i=1; i

第5行:将nums的数组大小值赋给整型变量len。

第7行:创建一个map集合对象,用来存放键值对,其中key不能重复,没有顺序,相当于一个set集合。

第9行:Object.put(Object key, Object value):添加一个键值对,如果集合中的key重复,则覆盖原来的键值对。注意这里在put时是将值作为key,然后这里的value是数组的索引。

第10行:循环整个数组。

第11行:这一步逻辑很重要,以示例1为例吧,比如我的目标值是9,这里就假如i=1,nums[i]获取的是nums集合里面的值为2,那么target-nums[i]的值为7,赋给整型变量a。

第12行:这里if判断里面有一个boolean.containsKey(Object key)方法,这个方法返回Map集合中包含指定的键名,如果有返回true,否则放回false。括号中的参数放回的是要查询的Map集合的键名对象。

第13行:这里相当于定义了一个集合,集合里存放两个元素,第一个元素是当前for循环到的元素,第二个元素利用Object.get()方法返回的是key对应的value值,在这里就是相当于11行a=7的下标。

第17行:将每一次循环的数组元素,都以(值,下标)的方式存入到map集合中,利用map集合的特性,第9行说过,在map集合中如果key重复,则覆盖原来的值,这里就是覆盖原来第9行的Map.put(nums[0],0)的值。

第20,21行:这里抛出异常或者返回null,原因是想上面你的方法返回一个不合法或不正确的参数,或者返回一个数组也可以。相当于如果出现上面方法没有描述到的情况在这里不解决,直接抛给方法或者放回null。

这里返回回一个不合法或不正确的参数,或者返回一个数组也可以。相当于如果出现上面方法没有描述到的情况在这里不解决,直接抛给方法或者放回null。

新手小白刚开始刷题,所以注释做的比较详细,主要方便自己理解,解题没考虑相关的时间和空间复杂度,有什么不足之处希望多多体谅,虚心求教。

转载地址:http://nogki.baihongyu.com/

你可能感兴趣的文章
Django用户认证系统 authentication system----登陆访问限制@login_required
查看>>
Change data directory – PostgreSQL
查看>>
debian下postgresql数据迁移
查看>>
Twisted
查看>>
Guide to boto -- MWS package
查看>>
An Example Using boto Amazon MWS Package
查看>>
linux下源码安装zbar
查看>>
Python 的生成二维码生成库 -- qrcode
查看>>
odoo教程---在odoo8中创建自定义的reports
查看>>
"go back" step in a workflow stops everything
查看>>
如何成为一名黑客
查看>>
英语学习资源收藏
查看>>
ubuntu下如何安装NFS服务用于文件共享
查看>>
VMware中Ubuntu安装VMware Tools步骤及问题解决方法
查看>>
优化VMware提高虚拟机运行速度的技巧
查看>>
gcc编译器命令使用详解
查看>>
gcc编译动态库和静态库的详细说明
查看>>
linux下用gcc生成静态库和动态库
查看>>
linux下的动态库和静态库
查看>>
JpGraph中文乱码问题
查看>>