本题以激励自己继续向前,菜到抠脚,好好学习!
继续学习算法,继续刷题!
!!!!!!!!!!!!!!!!
2019-04-09
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* 给定一个整数数组A,拥有N个不重复的整数,找到数组中两数之和出现最多的数
* 如果有多种可能,输出全部结果,结果无序任意
* @author Duanxi Cao
*
*/
public class Test9 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int arr[] = new int[N];
for(int i=0; i<N; i++) {
arr[i] = s.nextInt();
}
int arr1[] = new int[(N*(N-1))/2];
//获取所有可能的结果
int count = 0;
for(int i=0; i<arr.length; i++) {
for(int j=i+1; j<arr.length; j++) {
arr1[count++] = arr[i] + arr[j];
}
}
//利用map来存数据
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0; i<arr1.length; i++) {
if(map.containsKey(arr1[i])) {
int temp = map.get(arr1[i]);
map.put(arr1[i], temp+1);//次数加1
}else {
map.put(arr1[i], 1);//出现就将次数设置为1
}
}
Collection<Integer> value = map.values();
int maxCount = Collections.max(value);
for(Map.Entry<Integer, Integer> m :map.entrySet()) {
if(m.getValue() >= maxCount) {
System.out.println(m.getKey());
}
}
s.close();
}
}
验证的数为
8
1 8 3 11 4 9 2 7
输出结果:
10
11
12