【剑指offer】53 - II. 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字
知识点:数组,二分查找;
题目描述
统计一个数字在排序数组中出现的次数。
示例
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
解法一:二分查找
看到排序数组--> 二分查找;
根据题目:可以根据是否和索引对应分成两部分:
- 1.nums[i] == i; 索引和值能一一对应上;
- 2.nums[i] != i; 索引和值对不上了;
我们要找的就是第一个对不上的时候的索引;也就是右子数组的首位元素;
和33题一样,要明确的一点是最后执行的一定是left=right=mid,而且此时mid左侧都是对应的,mid右侧都是不对应的,所以判断此刻mid的值:
- 1.nums[mid] == mid; 那left=mid+1就是第一个不匹配的;
- 2.nums[mid] != mid,那left就是第一个不匹配的;
所以最后返回left就可以了。
class Solution {
public int missingNumber(int[] nums) {
int left = 0, right = nums.length-1;
while(left <= right){
int mid = left + ((right-left) >> 1);
if(nums[mid] == mid){
left = mid+1; //一定在右边;
}else{
right = mid-1; //可能正好是mid,但是我们还是可以mid-1,因为最后如果相等了,我们返回的是left;
//在上面执行了+1的操作,所以正好是不等的。要始终明白在最后时刻的时候,left=mid=right,而且mid左边都排好了,mid右边都乱了,只要看mid这个就行了;
//(注意和153题区分,那里就不能减1);
}
}
return left;
}
}
【剑指offer】53 - II. 0~n-1中缺失的数字的更多相关文章
- [简单-剑指 Offer 53 - II. 0~n-1中缺失的数字]
[简单-剑指 Offer 53 - II. 0-n-1中缺失的数字] 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一 ...
- 剑指 Offer 53 - II. 0~n-1中缺失的数字 + 二分法
剑指 Offer 53 - II. 0-n-1中缺失的数字 Offer_53 题目详情 java代码 package com.walegarrett.offer; /** * @Author Wale ...
- 力扣 - 剑指 Offer 53 - II. 0~n-1中缺失的数字
题目 剑指 Offer 53 - II. 0-n-1中缺失的数字 思路1 排序数组找数字使用二分法 通过题目,我们可以得到一个规律: 如果数组的索引值和该位置的值相等,说明还未缺失数字 一旦不相等了, ...
- 剑指 Offer 53 - II. 0~n-1中缺失的数字
本题 题目链接 题目描述 我的题解 二分法 思路分析 排序数组中的搜索问题,首先想到二分法 当nums[center] > center 时,缺少的数在左区间 当nums[center] = c ...
- [LeetCode]面试题53 - I. 在排序数组中查找数字 I(二分);面试题53 - II. 0~n-1中缺失的数字(二分)
##面试题53 - I. 在排序数组中查找数字 I ###题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 ...
- 《剑指offer》面试题53 - II. 0~n-1中缺失的数字
问题描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字. 示例 1: 输入: [ ...
- [简单-剑指 Offer 53 - I. 在排序数组中查找数字 I]
[简单-剑指 Offer 53 - I. 在排序数组中查找数字 I] 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出 ...
- 剑指 Offer 53 - I. 在排序数组中查找数字 I + 二分法
剑指 Offer 53 - I. 在排序数组中查找数字 I Offer_53_1 题目描述 方法一:使用HashMap package com.walegarrett.offer; /** * @Au ...
- 力扣 - 剑指 Offer 53 - I. 在排序数组中查找数字 I
题目 剑指 Offer 53 - I. 在排序数组中查找数字 I 思路1 一般来说,首先想到的是使用一个变量,从头开始遍历整个数组,记录target数组出现的次数,但是这样的时间复杂度是O(n),还是 ...
随机推荐
- android悬浮窗口
悬浮窗原理 做过悬浮窗功能的人都知道, 要想显示悬浮窗, 要有一个服务运行在后台, 通过getSystemService(Context.WINDOW_SERVICE)拿到WindowManager, ...
- 【.NET 与树莓派】TM1638 模块的按键扫描
上一篇水文中,老周马马虎虎地介绍 TM1638 的数码管驱动,这个模块除了驱动 LED 数码管,还有一个功能:按键扫描.记得前面的水文中老周写过一个 16 个按键的模块.那个是我们自己写代码去完成键扫 ...
- 精尽Spring Boot源码分析 - Jar 包的启动实现
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- layui tabs选项卡 响应试不显示问题
添加: var element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块 element.init();
- k8s结合jumpserver做kubectl权限控制 用户在多个namespaces的访问权限 rbac权限控制
圈子太小,做人留一面,日后好相见. 其实这个文章就是用户用jumpserver登录到k8s master节点 然后执行kubectl的时候只有自己namespaces的所有权限. 背景 1,k8s 有 ...
- 重新整理 .net core 实践篇————配置中心[四十三]
前言 简单整理一下配置中心. 正文 什么时候需要配置中心? 多项目组并行协作 运维开发分工职责明确 对风险控制有更高诉求 对线上配置热更新有诉求 其实上面都是套话,如果觉得项目不方便的时候就需要用配置 ...
- Postgresql:postgres命令行导入sql文件
sql文件导入 psql -d jdbc -h localhost -p 5432 -U postgres -f /home/sql/test.sql #-d 数据库名称 #-h ip地址 #-p 端 ...
- muggle_ocr 下载安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple muggle_ocr
- ESP32-默认事件循环
默认的事件循环是一个事件循环的系统应用发布和处理事件(例如,Wi-Fi无线事件). 基于ESP-IDF4.1 1 #include "esp_log.h" 2 #include & ...
- asp.net core 视图组件(转)
介绍视图组件 视图组件是 ASP.NET Core MVC 中的新特性,与局部视图相似,但是它们更加的强大.视图组件不使用模型绑定,只取决于调用它时所提供的数据.视图组件有以下特点: 渲染一个块,而不 ...