码迷,mamicode.com
首页 > 其他好文 > 详细

力扣刷题记录(2021.2.9) 剑指 Offer 53 - II. 0~n-1中缺失的数字

时间:2021-02-09 12:41:19      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:示例   pre   span   iss   size   刷题记录   有序   missing   并且   

题目描述

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


 

   示例1

输入: [0,1,3]
输出: 2

示例2
输入: [0,1,2,3,4,5,6,7,9]
输出: 8


思路:使用二分查找,刚开始写的算法用
mid-left和right-mid的值比较
来判断缺失值在mid的左边还是右边,但后面发现是多余的
实际上这是一个有序的升序列,我们只要判断
num[mid]==mid即可,如果等于就证明缺失值在mid的右面
如果不等于则证明缺失值在mid的左面
算法如下


public int missingNumber1(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int m = (left + right) / 2;
if (nums[m] == m) {
//缺失在右边
left = m + 1;
} else {
//缺失值在左边
right = m - 1;
}
}
return left;
}
 

力扣刷题记录(2021.2.9) 剑指 Offer 53 - II. 0~n-1中缺失的数字

标签:示例   pre   span   iss   size   刷题记录   有序   missing   并且   

原文地址:https://www.cnblogs.com/spx88/p/14392043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!