新手 1. Two Sum --- Java

6 篇文章 0 订阅
4 篇文章 0 订阅

1. Two Sum

【题目】
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]

【题目理解】
我个人对这个题目的理解是给一个数组,target就是数组中任意两个数相加的结果,数组中的一个数字只能用一次,最后返回的是一个数组,返回的数组里面的数是当时用于相加的那两个数的索引。可以看example理解。

【代码部分】

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

【对代码的理解以及为什么想到会这么写】

1: 什么是HashMap?为什么要用到HashMap?
HashMap是一个存储key-value的东西,target给的数是需要我去数组里面进行查找,hashmap可以加快查找速度。

2: containsKey是什么?为什么用到这里?
containsKey用于检查特定的键是否已经映射到HashMap中了,比如6 = 2 + 3,通过用containsKey来检查是否3在这个数组里面。

3: get 和 put 是什么意思
get和put是HashMap中的API,get是为了访问HashMap中的value,put是向里面添加东西。

对于这段代码的理解就是:
首先从数组中的第一个元素遍历,通过给的target和遍历的每一个元素来查找是否存在另一个元素是‘target - 遍历的每一个元素的索引’的结果,如果有的话返回一个新的数组获取这个‘另一个元素’,然后在把两个元素放在一起。最后一行是抛出异常的固定写法。

【Tips】
以上是个人查阅了一些资料后的理解,希望有高人可以指出不对的地方和问题,比如get里面的第二个i, 和put里面第二个i都是什么?望和我一样零基础的人可以一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值