人生的第一道编程笔试题

本题以激励自己继续向前,菜到抠脚,好好学习!

继续学习算法,继续刷题!

!!!!!!!!!!!!!!!!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值