2017年校招全国统一模拟笔试(第一场)编程题集合——连续整数

来源:互联网 发布:淘宝特价清仓花架 编辑:程序博客网 时间:2024/04/28 00:06

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

import java.util.Arrays;import java.util.Scanner;public class ContinuousInt {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        int n = in.nextInt();        int i=0;        int[] nums =new int[n];        while(i<n)        {            nums[i++]=in.nextInt();        }        /*while(in.hasNextInt())        {            nums[i++]=in.nextInt();        }*/        seekLackNum(n, nums);    }    public static void seekLackNum(int n,int[] nums)    {        Arrays.sort(nums);        int i=0,len=nums.length,res=0;              boolean flag1 = true; //flag1=true时,表示数组有序,刚开始默认数组有序        boolean flag2 = false; //flag2=true时,表示数组有间隔        if(len==1 && nums[0]==1)        {            System.out.println(nums[0]+1);            flag1 = false;        }        while(i<len-1)        {            if(nums[i]+1==nums[i+1])            {                i++;            }            else if(nums[i]+2==nums[i+1])            {                if(!flag2)                {                    res=nums[i]+1;                    flag2=true;                    flag1=false;                    i++;                }                else                {                    System.out.println("mistake");                    flag2=false;                    flag1=false;                    break;                }               }            else            {                System.out.println("mistake");                flag1=false;                break;            }        }        if(flag2)System.out.println(res);        if(flag1)        {            if(nums[0]!=1)                System.out.println((nums[0]-1)+" "+(nums[len-1]+1));            else                System.out.println((nums[len-1]+1));        }    }}

总结:解题前先分析可能的情况。

0 0