注册 登录
编程论坛 JAVA论坛

一个长度不小于2自然数数组A[m, m+1, m+2… n],包含一些连续的自然数,但是其中有且仅有一个自然数丢失了

JavaJack 发布于 2016-11-18 00:55, 1674 次点击
一个长度不小于2自然数数组A[m, m+1, m+2… n],包含一些连续的自然数,但是其中有且仅有一个自然数丢失了,
请你找出那个丢失的自然数。比如[10,11,12,13,15],丢失的自然数是14。如果没丢失比如[1,2,3,4,5],那么就返回-1。
 Java: int findMissing(int[] a)

class Find
{
    int n=0;
    int data=0;
    public int findMissing(int[] number){
        int len=number.length;
        if ((number[len-1]-number[0]+1)==len)
        {
            data=-1;
        }else{
            while (n<len)            //确保所有的数组元素都有比较
            {
                if (number[0]+n==number[n])        //将此位置的正确值与当前实际值作比较
                {
                    n++;
                }else{
                    data=number[0]+n;
                    n=len;                //让n满足条件,退出while循环
                }
            }
        }
        return data;
    }
}
public class FindMissingDemo
{
    public static void main(String args[])
    {
        Find f=new Find();
        int num[]={10,11,12,14,15,16,19,20};
        System.out.println(f.findMissing(num));
    }
}
这是我写的程序,虽然目的达到了,但是感觉很渣!求大神指导一下
2 回复
#2
learnJava2016-11-18 11:23
折半 递归 找a[n]-a[0]≠n
#3
JavaJack2016-11-18 17:43
回复 2楼 learnJava
屌屌的
1