[编程题]连续整数 JAVA




牛牛的好朋友羊羊在纸上写了n+1个整数,羊羊接着抹除掉了一个整数,给牛牛猜他抹除掉的数字是什么。牛牛知道羊羊写的整数神排序之后是一串连续的正整数,牛牛现在要猜出所有可能是抹除掉的整数。例如:
10 7 12 8 11 那么抹除掉的整数只可能是9
5 6 7 8 那么抹除掉的整数可能是4也可能是9

输入描述:
输入包括2行:
 第一行为整数n(1 <= n <= 50),即抹除一个数之后剩下的数字个数
 第二行为n个整数num[i] (1 <= num[i] <= 1000000000)


输出描述:
在一行中输出所有可能是抹除掉的数,从小到大输出,用空格分割,行末无空格。如果没有可能的数,则输出mistake
示例1

输入

2 3 6

输出

mistake


import java.util.*;
public class Main { 
	 public static void main(String[] args){
		 Scanner scanner=new Scanner(System.in);
		int count=scanner.nextInt();
		int[] num = new int[count];
		for(int i=0;i<count;i++){
			num[i]=scanner.nextInt();
			
		}
		//判断是否有重复数字
		Set<Integer> set=new HashSet<Integer>();
		for(int i:num){
			set.add(i);	
		}
		if(set.size()!=num.length){
			System.out.print("mistake");
			return;
		}
		Arrays.sort(num);
		if(num[count-1]-num[0]==count){
			int result=0;
			for(int i=0;i<count;i++){
				result+=num[i];
			}
			System.out.print(((num[0]+num[count-1])*(count+1)/2)-result);
		}
		else if(num[count-1]-num[0]==count-1){
			if(num[0]==1&&num[count-1]==1000000000){
				System.out.print("mistake");
			}
			if(num[0]==1){
                System.out.print(num[count-1]+1);
            }else{
                System.out.print(num[0]-1+" "+(num[count-1]+1));
            }
		}
		else{
			System.out.print("mistake");
		}
	 }
}


发布了13 篇原创文章 · 获赞 0 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34445857/article/details/79239919