LeetCode 100题题解(JAVA) 两数之和

本文详细介绍了LeetCode第100题——两数之和的JAVA解题思路与代码实现。通过使用HashMap存储数组元素及其下标,遍历数组查找和为目标值的两个数,当找到时返回其下标。文章重点在于HashMap的运用,阐述了如何将编程思维转化为代码的过程。
摘要由CSDN通过智能技术生成

# LeetCode 100题题解(JAVA) 两数之和

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:简单记录一下答案和思路。


提示:以下是本篇文章正文内容,下面案例可供参考

简单记录一下答案和思路。

一、两数之和

题目描述:

给定一个整数数组 nums 和一个整数目标值 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]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、解题思路

1.使用HashMap

1.声明一个HashMap接收字符串数值,key存字符值,value存下标.
2.对数组进行for循环,判断Map中是否包含target-nums[i]
3.第一次,Map为空,肯定不包含,将数值num[0],存入
4.如果包含,说明Map中有一个数(之前存入Map中数组中的值)与当前nums[i]之和为target,返回当前的数组下标i和对应的map中的value.	
把数组的每一个值存入HashMap中.
5.如果没有答案,抛出异常

2.代码如下

class Solution {
    public int[] twoSum(int[] nums, int target) {
       Map<Integer,Integer> map = new HashMap<>();
       for(int i=0;i<nums.length;i++){
           if(map.containsKey(target - nums[i])){
               return new int[] {map.get(target - nums[i]),i};
           }else{
               map.put(nums[i],i);
           }
       }
       throw new IllegalArgumentException("No two sum solution");
    }
}

总结

提示:这里对文章进行总结:

关键是对HashMap的使用,搞清楚key和value存什么,以及将两数和的条件翻译成代码:

map.containsKey(target - nums[i])

其实也很简单,将数组和HashMap联合起来使用就行,我觉得编程有一个思想很关键,就是将旧的值的,或者说遍历到的值,存入一个容器(变量,便于理解但说法不准确),以后要用到的时候可以方便调用. 比如讲num[0]存入HashMap中,之后就的循环也会用到该值进行判断.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值