两数之和

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

思想:map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.wereash.scut_hot100;

import java.util.HashMap;
import java.util.Scanner;

/**
* @Author: WereAsh
* @Date:2026-01-08 20:58
**/
public class Solution001 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
int target=scanner.nextInt();
String str=s.substring(1,s.length()-1);
String[] strs=str.split(",");
int[] nums=new int[strs.length];
for (int i=0;i<nums.length;i++){
nums[i]=Integer.parseInt(strs[i].trim()); // trim() 去除可能的空格
}
HashMap<Integer,Integer> hashMap=new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
int rest=target-nums[i]; //得到当前元素和target的差
if (hashMap.containsKey(rest)) { //map中是否有值为rest的key
System.out.println(i+","+hashMap.get(rest)); //有则输出
}
hashMap.put(nums[i],i);
}
}
}