博客
关于我
剑指offer-面试题53-II:0~n-1中缺失的数字
阅读量:591 次
发布时间:2019-03-11

本文共 594 字,大约阅读时间需要 1 分钟。

题目描述

一个长度为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
限制:
1 <= 数组长度 <= 10000

方法一(二分查找)

1.解题思路

二分查找很容易实现,但是细节不好把握。这道题首先要确定查找范围,0到n-1总共有n个数,但是数组中只给了n-1个数,所以查找范围为左边界low=0,右边界high=数组长度(n-1);然后是二分策略,当下标等于当前值时,肯定不是要找的数,左边界后移(low=mid+1),当下标不等于当前值时,可能是要找的数,也可能要找的数在左边,所以缩小右边界的同时,要包含当前下标(high=mid)。

2代码实现

class Solution {       public int missingNumber(int[] nums) {           int low=0,high=nums.length;        while(low

3.复杂度分析

  • 时间复杂度:需要进行logn次二分,所以时间复杂度为O(logn)。
  • 空间复杂度:不需要额外的内存空间,所以空间复杂度为O(1)。

剑指offer全集入口:

转载地址:http://bsjtz.baihongyu.com/

你可能感兴趣的文章
MySQL学习笔记十七:复制特性
查看>>
Mysql学习第一课-mysql的定义及sql语句
查看>>
mysql安全模式: sql_safe_updates
查看>>
mysql安装,卸载,连接
查看>>
MySQL安装之没有配置向导
查看>>
mysql安装出现 conflicts with mysql*的解决办法
查看>>
mysql安装卡在最后一步解决方案(附带万能安装方案)
查看>>
mysql安装和启动命令小结
查看>>
Mysql安装教程(命令行)
查看>>
mysql安装版安装
查看>>
MySQL安装配置教程(非常详细),从零基础入门到精通,看完这一篇就够了
查看>>
mysql安装配置简介
查看>>
MySQL定义和变量赋值
查看>>
mysql定时任务事件清理单表数据
查看>>
MySQL定时器Events
查看>>
mysql实战01|基础架构:一条SQL查询语句是如何执行的?
查看>>
Mysql实战之数据备份
查看>>
MySQL实战教程:从小白到大神的进阶之路!
查看>>
mysql实现成绩排名
查看>>
Mysql客户端中文乱码问题解决
查看>>