题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
方法一:暴力法
遍历每个元素 xx,并查找是否存在一个值与 target - xtarget−x 相等的目标元素。
方法二:hashMap
在进行迭代并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。
package com.example.demo1;
import java.util.*;
public class Test {
public static ArrayList<int[]> fun(int[] nums,int target){
ArrayList<int[]> list = new ArrayList<>();
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0;i < nums.length;i++){
int[] ss = new int[2];
int taa = target - nums[i];
if(map.containsKey(taa) ){
ss[0] = map.get(taa);
ss[1] = i;
list.add(ss);
// return new int[]{map.get(taa),i};
}
map.put(nums[i],i);
}
return list;
}
public static void main(String[] args) {
int[] nums = {2, 7,2,4,5, 11, 15};
int target = 9;
ArrayList<int[]> list = fun(nums, target);
for(int i = 0 ; i<list.size();i++){
System.out.print(Arrays.toString(
list.get(i)));
}
}
}