以最快的方法 找出一组连续数字中缺少的那一个

----------------- 2013-10-29 11:47:28
例如{3,4,5,6,8,9},以最快的方法找出
...全文
398 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 sj490790083 的回复:
错了 改成int[] array={3,4,5,6,8,9}; int missingNum=((array[0]+array[array.Length-1])*array.Length)/2-array.Sum();
如果只是一组连续数字中寻找缺失的一个数字就可以直接用这个方法 有个小错误, 乘数array.Length应该加1

int[] array={3,4,5,6,8,9};
int missingNum=((array[0]+array[array.Length-1])*(array.Length+1))/2-array.Sum();
sj490790083 2013-10-29
  • 打赏
  • 举报
回复
错了 改成int[] array={3,4,5,6,8,9}; int missingNum=((array[0]+array[array.Length-1])*array.Length)/2-array.Sum();
sj490790083 2013-10-29
  • 打赏
  • 举报
回复
int[] array={3,4,5,6,8,9}; int missingNum=((array[0]+array[array.Length])*array.Length)/2-array.Sum();
by_封爱 版主 2013-10-29
  • 打赏
  • 举报
回复
7 这个问题 我用右眼就看出来了.
智商余额不足 2013-10-29
  • 打赏
  • 举报
回复

static int GetValue(int[] n)
{
    int low = 0;
    int high = n.Length - 1;
    while (low < high)
    {
        int mid = (low + high) / 2;
        if (n[mid] > n[0] + mid) high = mid;
        else low = mid;
        if (high - low == 1)
        {
            if (n[high] - n[low] == 1) low = high;
               break;
        }
    }
    return n[low] + 1;
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧