给定一个数组和一个数字,从数组中找到两个元素,这两个元素的和等于给定的数字
要求返回两个元素的下角标,比如a[1,3,5,7]和数字6,返回index1= 1,index2 = 3
public static int[] sum(int nums[],int tarNum){ //首先使用哈希map,存储数组的元素和该元素对应的下角标 HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i = 0;i < nums.length; i++){ map.put(nums[i],i); } //定义一个长度为2的数组,记录找到的两个元素的位置 int index[] = new int[2]; //遍历数组,找到第二个元素的位置 for(int i = 0;i < nums.length;i++){ //定义一个数字j,用于记录第二个元素的位置,第一个元素为i不用专门记录 Integer j = map.get(tarNum - nums[i]); //如果j是位于i的后面并且j存在,就把两个元素各加一并返回 if(j != null && j > i){ index[0] = i + 1; index[1] = j + 1; } } return index; }
3、给定一个数组和一个数字,从数组中找到两个元素,这两个元素的和等于给定的数字
原文:https://www.cnblogs.com/junehozhao/p/11854865.html