import java.util.HashMap; import java.util.Map; public class TowSum { public static void main(String []args){ int[] nums={2,2,2,12}; int [] res=getIndexs(nums,4); for(int i:res){ System.out.println(i); } } /** * 背景:从数组中找出那两个数相加是目标数,并返回数组中的索引。2sum * * @param nums 数组 * @param target 目标值 * @return * 利用hashMap储存数组的索值和对应的索引,所以key对应数组的值,value对应数组的索引值。 * 遍历数据用目标值减去对应的数组值就是另一个组成的值看是否在map中 * 如果是返回当前索引号以及map中另一组成的索引号既map的value,并结束循环 * 如果不是存在数组中 */ public static int[] getIndexs(int[] nums,int target){ Map<Integer,Integer> map=new HashMap<>(); int [] res=new int[2]; for(int i=0;i<nums.length;i++){ if(map.containsKey(target-nums[i])){ res[0]=i; res[1]=map.get(target-nums[i]); break; } map.put(nums[i],i); } return res; } }