首页 > 其他 > 详细

剑指offer——570~n-1中缺失的数字

时间:2019-10-20 11:47:59      阅读:75      评论:0      收藏:0      [点我收藏+]

题目:0~n-1中缺失的数字。

  一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。

  在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

题解:

  使用二分法即可。

  

 1 int findLostNum(const vector<int> &data)
 2 {
 3     if (data.size() == 0)return -1;
 4     int L = 0, R = data.size() - 1, M;
 5     if (data[R] == R)return -1;
 6     while (L >= 0 && R < data.size() && L <= R)
 7     {
 8         M = (R - L) / 2 + L;
 9         if (data[M] == M)L = M + 1;
10         else if (data[M] > M)
11             if (M > 0 && data[M - 1] == M-1)return M;
12             else if (M == 0)return 0;
13             else R = M - 1;
14     }
15     return -1;
16 }

 

剑指offer——570~n-1中缺失的数字

原文:https://www.cnblogs.com/zzw1024/p/11706847.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!