博客
关于我
剑指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高级-MySQL并发参数调整
查看>>
MySQL高级-视图
查看>>
MySQL:判断逗号分隔的字符串中是否包含某个字符串
查看>>
nacos config
查看>>
Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
查看>>
Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置自动刷新源码解析
查看>>
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
Neo私链
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nestJS学习
查看>>