繁体   English   中英

在 java 中通过 hashmap 从数组中查找所有元素对,其总和等于给定数

[英]Find all pairs of elements from an array whose sum is equal to given number by hashmap in java

public static void main(String[] args) {
    getSum(new int[] {3,7,5,6,4,8} , 11);

}
public static void getSum (int arr [], int target) {
   /* for (int i = 0 ; i < arr.length ; i++) {
        for (int j = i+1 ; j < arr.length ; j++){
            if (arr[i] + arr[j] == 10 ) {
                System.out.println(" the Sum of  " + arr[i] + " and " + arr[j] + " is " + target);
            }
        }
    }
*/
    Map<Integer , Integer > map = new Hashtable<>() ;
    for (int i = 0 ; i < arr.length ; i++) {
        map.put(arr[i], i ) ;
    }
    //System.out.println(map);
    for (int j = 0 ; j < arr.length ; j++) {
       int numToFind = target - arr[j] ;
       if (map.containsKey(numToFind)  ) {
         System.out.println(" The Sum of  " + arr[j] + " and " + numToFind + " is " + target);

       }
    }
}

}

output 是

3和8之和是11
7和4之和是11
5和6之和是11
6和5之和是11
4和7之和是11
8和3之和是11

我不想重复答案

我应该怎么办?

您可以删除从 map 中找到的值对,以免出现任何重复。

// code here...
if(map.containsKey(numToFind)) {
    map.remove(arr[j]);
    map.remove(numToFind);
    // print
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM