每日一题之AcWing 68.0到n-1中缺失的数字
¶一、题解
题目大意:
0 到 n - 1 的数依次升序排列,其中有某个数不在该序列中!要求找出该数!
思路:
很明显,是一道二分题目!
但是最关键的是要找到如何二分,即这道题的二段性,也就是前一段满足一个条件而后一段满足另一个条件!
还是很容易找到一个规律:
- 目标数的左边,都是下标和数值相等的
- 目标数的右边,都是下标和数值不相等的
因此我们可以利用二段性,二分出第一段最后一点,或者是第二段的第一个点!
本题的答案当然就是第二段的第一个点,即第一个下标和数值不相等的点!
还可以做一下特判,如果该序列的最后一个数 nums[n - 1] 与下标 n - 1 相同,直接返回 n!
时间复杂度: O(logn)
空间复杂度: O(1)
¶二、AC代码
参考代码:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论