目录
- 题目
- 1-思路
- 2- 实现
- ⭐1. 两数之和——题解思路
- 3- ACM实现
题目
- 原题连接:1. 两数之和
1-思路
哈希表
- 利用哈希表存储 key 数组元素值 ——> value 数组下标
- 遍历数组
2- 实现
⭐1. 两数之和——题解思路
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
// 哈希表
Map<Integer,Integer> map = new HashMap<>();
// 存 key 值 ——> value 下标
// 遍历数组
for(int i = 0 ; i < nums.length ;i++){
if(map.containsKey(target-nums[i])){
res[0] = i;
res[1] = map.get(target-nums[i]);
}
map.put(nums[i],i);
}
return res;
}
}
3- ACM实现
public class twoSum {
public static int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
// 哈希表
Map<Integer,Integer> map = new HashMap<>();
// 存 key 值 ——> value 下标
// 遍历数组
for(int i = 0 ; i < nums.length ;i++){
if(map.containsKey(target-nums[i])){
res[0] = i;
res[1] = map.get(target-nums[i]);
}
map.put(nums[i],i);
}
return res;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入数组长度");
int n = sc.nextInt();
int[] nums = new int[n];
for(int i = 0 ; i < n;i++){
nums[i] = sc.nextInt();
}
System.out.println("输入目标和");
int target = sc.nextInt();
int[] forRes = twoSum(nums,target);
for(int i : forRes){
System.out.print(i+" ");
}
}
}