leetcode二分查找算法题

目录

  • 1.二分查找
  • 2.在排序数组中查找元素的第一个和最后一个位置
  • 3.x的平方根
  • 4.搜索插入位置
  • 5.山脉数组的峰顶索引
  • 6. 寻找峰值
  • 7.寻找旋转排序数组中的最小值
  • 8.8.0~n-1中缺失的数字

1.二分查找

二分查找
在这里插入图片描述

class Solution {
public:int search(vector<int>& nums, int target) {int left=0,right=nums.size()-1;while(left<=right){int mid = left+(right-left)/2;if(nums[mid]<target) left = mid+1;else if(nums[mid]>target) right = mid-1;else return mid;}return -1;}
};

2.在排序数组中查找元素的第一个和最后一个位置

在排序数组中查找元素的第一个和最后一个位置
在这里插入图片描述

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size() == 0) return {-1,-1};int begin =-1;//查找区间的左端点int left = 0,right=nums.size()-1;while(left<right){int mid = left+(right-left)/2;if(nums[mid]<target) left=mid+1;else right=mid;}if(nums[left]!=target) return {-1,-1};begin = left;//查找区间的右端点left = 0,right=nums.size()-1;while(left<right){int mid = left+(right-left+1)/2;if(nums[mid]<=target) left=mid;else right=mid-1;}return {begin,right};}
};

3.x的平方根

x的平方根
在这里插入图片描述

class Solution {
public:int mySqrt(int x) {if(x<1) return 0;int left =1,right=x;while(left<right){long long mid = left+(right-left+1)/2;if(mid*mid<=x) left=mid;else right=mid-1;}return left;}
};

4.搜索插入位置

搜索插入位置
在这里插入图片描述

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0,right =nums.size()-1;while(left<right){int mid = left+(right-left)/2;if(nums[mid]<target) left = mid+1;else right=mid;}if(nums[left]<target) return left+1;return left;}
};

5.山脉数组的峰顶索引

山脉数组的峰顶索引
在这里插入图片描述

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 1,right = arr.size()-2;while(left<right){int mid = left+(right-left+1)/2;if(arr[mid]>arr[mid-1]) left = mid;else right = mid-1;}return left;}
};

6. 寻找峰值

寻找峰值
在这里插入图片描述

class Solution {
public:int findPeakElement(vector<int>& nums) {int left = 0,right = nums.size()-1;while(left<right){int mid = left+(right-left)/2;if(nums[mid]>nums[mid+1]) right=mid;else left = mid+1;}return left;}
};

7.寻找旋转排序数组中的最小值

寻找旋转排序数组中的最小值
在这里插入图片描述

class Solution {
public:int findMin(vector<int>& nums) {int left =0,right =nums.size()-1;int x = nums[right];while(left<right){int mid = left+(right-left)/2;if(nums[mid]>x) left = mid+1;else right=mid;}return nums[left];}
};

8.8.0~n-1中缺失的数字

0~n-1中缺失的数字
在这里插入图片描述

class Solution {
public:int takeAttendance(vector<int>& records) {int left = 0,right=records.size()-1;while(left<right){int mid = left+(right-left)/2;if(records[mid]==mid) left = mid+1;else right = mid;}return records[left]==left?left+1:records[left]-1;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/175733.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕设 机器学习股票大数据量化分析与预测系统 - python 计算机毕设

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业…

高德地图系列(一):vue项目如何使用高德地图、入门以及基本控件使用

目录 第一章 前言 第二章 准备工作 2.1 账号注册 2.2 高德地图开发平台文档 2.3 创建应用 第三章 使用地图 3.1 地图使用步骤 3.2 理解几个地图基础控件 3.3 基础类理解 第一章 前言 小编都是在vue项目中使用高德地图的&#xff0c;每一个功能都会亲测可用之后才会…

Intellij IDEA 内存设置的问题 及解决

解决方案&#xff1a; 在IDEA上运行较大项目时&#xff0c;编译量很大&#xff0c;可能会报出 Error:java: java.lang.OutOfMemoryError: Java heap space 的错误&#xff0c;解决方法如下&#xff1a; java.lang.OutOfMemoryError是内存不足导致的&#xff0c;因此需要修改Id…

景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商

根据IDC相关数据统计&#xff0c;全球数据量正在经历爆炸式增长&#xff0c;预计将从2016年的16.1ZB猛增至2025年的163ZB&#xff0c;其中大部分是非结构化数据&#xff0c;被直接利用&#xff0c;必须通过数据标注转化为AI可识别的格式&#xff0c;才能最大限度地发挥其应用价…

Python-Python高阶技巧:HTTP协议、静态Web服务器程序开发、循环接收客户端的连接请求

版本说明 当前版本号[20231114]。 版本修改说明20231114初版 目录 文章目录 版本说明目录HTTP协议1、网址1.1 网址的概念1.2 URL的组成1.3 知识要点 2、HTTP协议的介绍2.1 HTTP协议的概念及作用2.2 HTTP协议的概念及作用2.3 浏览器访问Web服务器的过程 3、HTTP请求报文3.1 H…

stable diffusion comfyui的api使用教程

一、为什么要使用comfyui的api?对比webui的api&#xff0c;它有什么好处&#xff1f; 1、自带队列 2、支持websocket 3、无需关心插件是否有开放api接口&#xff0c;只要插件在浏览器中可以正常使用&#xff0c;接口就一定可以使用 4、开发人员只需关心绘图流程的搭建 5、切换…

机器学习入门案例(3)之使用决策树预测是否适合打网球

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…

【Kotlin精简】第8章 协程

1 简介 Kotlin 中的协程提供了一种全新处理并发的方式&#xff0c;您可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入&#xff0c;但这一概念在编程世界诞生的黎明之际就有了&#xff0c;最早使用协程的编程语言可以追溯到 1967 年的 Sim…

vscode + gdb +gdbserver 远程调试Pg源码

本文主要介绍如何通过window或者macos远程调试虚拟机的postges源码 安装pg13调试版本 安装调试版postgres13,此处忽略 安装vscode(window macos) 安装插件 Remote Development 插件安装插件C/C 安装gdb gdbserver(远程虚拟机) yum install gdb yum install gdb-gdbserver…

SpringCloud Alibaba(中):服务熔断降级-Sentinel

Sentinel Sentinel是阿里巴巴开源的分布式系统流量防卫防护组件&#xff0c;主要对分布式系统中的流量进行控制、熔断降级等保护操作。Sentinel的目标是成为互联网级别分布式系统的流量防卫防护组件&#xff0c;它与系统的各个部分集成&#xff0c;保护着系统的入口和出口。 …

【go】报错整理与解决

文章目录 依赖下载失败checksum mismatch启动报错missing go.sum 依赖下载失败checksum mismatch > go get github.com/hibiken/asynqmon go: downloading github.com/hibiken/asynqmon v0.7.2 go: github.com/hibiken/asynqmonv0.7.2: verifying module: checksum mismatc…

微服务简单理解与快速搭建

分布式和微服务 含义 微服务架构 微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法&#xff0c;每个服务运行在自己的进程中&#xff0c;服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服…