Java找出不重复无序数组中和为n的两数的下标
1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 5 public class Demo5 { 6 7 public static void main(String[] args) { 8 9 int[] arr = new int[]{3, 4, 5, 9, 8}; 10 int num = 8; 11 int[] ret = getIndex(arr, num); 12 System.out.println("index of two number:" + ret[0]+" " + ret[1]); 13 14 } 15 16 //找到这两个数的下标,并以长度为2的数组形式返回 17 public static int[] getIndex(int[] arr, int num){ 18 19 int[] ret = new int[2]; //长度为2的数组 20 HashMap<Integer, Integer> hashMap = new HashMap<>(); 21 int index = 0; 22 23 //将每个数字及其下标放入map中 24 for (int i : arr) { 25 hashMap.put(i, index++ ); 26 } 27 28 //遍历 HashMap 并判断 29 Iterator iterator = hashMap.entrySet().iterator(); 30 while (iterator.hasNext()){ 31 Map.Entry entry = (Map.Entry)iterator.next(); 32 33 int value = (int) entry.getKey(); 34 int subValue = num - value; 35 36 if (hashMap.containsKey(subValue)){ 37 //找到了 38 ret[0] = (int) entry.getValue(); 39 ret[1] = hashMap.get(subValue); 40 break; 41 } 42 } 43 return ret; 44 45 } 46 }