博客
关于我
剑指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/

你可能感兴趣的文章
NetMizer-日志管理系统 dologin.php SQL注入漏洞复现(XVE-2024-37672)
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
netron工具简单使用
查看>>
NetScaler MPX Gateway Configuration
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
netstat kill
查看>>
netstat命令用法详解
查看>>
Netstat端口占用情况
查看>>
Netty 4的内存管理:sun.misc.Unsafe
查看>>
Netty channelRegistered\ChannelActive---源码分析
查看>>
Netty NIO transport && OIO transport
查看>>
netty php,netty
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Vue过渡 & 动画---vue工作笔记0014
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty 的 Handler 链调用机制
查看>>
Netty 编解码器和 Handler 调用机制
查看>>