leetcode_【1】两数之和

1.题目描述

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

2.解题思路

依次遍历数组里面的数值

(1)用一个hashmap存储(target-nums[i],索引位置)

(2)如果下一次出现nums[i],说明找到了。直接将她的坐标跟之前存储的坐标存到结果。

如示例:nums = [2, 7, 11, 15], target = 9

i = 0 时, map存入(7,0)

i= 1时,发现map.get(num[i]) = map.get(7)!=null, 存在,即找到了,直接将map.get(7) =0,i = 1,这两个值存到结果res里面返回。

3.代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public int[] twoSum(int[] nums, int target) {
//用一个hashmap进行存储【key = target-nums[i],value = 索引位置】
Map<Integer,Integer> map = new HashMap();
int res[] = new int[2];
for(int i = 0;i<nums.length;i++){
//此时只要寻找map里面是否有nums[i],即找到两数之和
//map.get(nums[i])指向的是(target-nums[i])那个数的索引,i指向的是nums[i]的索引
if(map.get(nums[i])!=null){
res= new int[]{map.get(nums[i]), i};
return res;
}else{
map.put(target-nums[i],i);
}
}
return res;
}
}

4.我的提交记录

两数之和

文章目录
  1. 1. 1.题目描述
  2. 2. 2.解题思路
  3. 3. 3.代码
  4. 4. 4.我的提交记录
| 139.6k