
剑指Offer--Java--0到n-1中缺失的数字
由数轴可知道,
发布日期:2021-05-04 06:37:21
浏览次数:18
分类:技术文章
本文共 598 字,大约阅读时间需要 1 分钟。
题目描述
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内。
在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
样例描述
输入:[0,1,2,4]输出:3
思路
由于题目给的是递增数组,假设缺失的是x
,如下

x
左侧全都是nums[i]==i
,右侧全是nums[i]!=i
,所以可以使用二分法来逐步缩小范围。 注意 - 边界判断,可能数组长度为0。
- 若该递增数组不缺失,则缺失的是下一个数。
- 时间复杂度是O(logn)。
代码
class Solution { public int getMissingNumber(int[] nums) { //判断边界 if(nums.length==0) return 0; int l=0,r=nums.length-1; while(l>1; //若不相等,则肯定在右侧范围找 if(nums[mid]!=mid) r=mid; else l=mid+1; } //若所有数都满足,则缺失的是下一个数 if(nums[r]==r) r++; return r; }}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月10日 02时05分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用redis管理Mybatis的二级缓存
2019-03-01
使用redis管理Mybatis-Plus的二级缓存
2019-03-01
Mybatis中的SQL语句等于、不等于和模糊查询的语法
2019-03-01
使用 github 搜索
2019-03-01
java有包名的类访问没有包名的类
2019-03-01
TIOBE 12月编程语言排行榜:Python有望第四次成为年度语言
2019-03-01
Python循环语句代码逐行详解:while、for、break和continue
2019-03-01
整型关键字的散列映射
2019-03-03
多位水仙花数-python(出现运行超时?不妨用减法计算)
2019-03-03
地下迷宫探索(后两个测试点无法通过?这里有你想要的答案)
2019-03-03
城市间紧急救援(dijkstra算法)
2019-03-03
关键活动(注释超详细!!!)
2019-03-03
小白看完都会了!阿里云大师深入拆解Java虚拟机,看完这一篇你就懂了
2019-03-03
【IT之路】FAQ-Hibernate报错:表不存在
2019-03-03
【2020阿里云博客部署实战】如何远程连接和管理控制台基本介绍
2019-03-03
C程序举例:利用数组
2019-03-03
VBA之正则表达式(19)-- 相对引用转绝对引用
2019-03-03
巧用VBA统一数字单位
2019-03-03
Transpose实现数组行列转置的限制
2019-03-03
VBA中数组72变(随心所欲复制)
2019-03-03