当前位置: 首页 > news >正文

【C++算法】二分查找

 二分查找

  • 题目链接

二分查找icon-default.png?t=O83Ahttps://leetcode.cn/problems/binary-search/

  • 算法原理

  • 代码步骤

  • 代码展示
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 + 1) / 2;if(nums[mid] < target) {left = mid + 1;}else if(nums[mid] > target){right = mid - 1;}else {return mid;}}return -1;}
};

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

  • 题目链接

在排序数组中查找元素的第一个和最后一个位置icon-default.png?t=O83Ahttps://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/

  • 算法原理

  • 代码步骤

  • 代码展示
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size() == 0){return {-1, -1};}// 设置左端点和右端点int begin = -1, end = -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;}}if(nums[right] != target) return {-1, -1};end = right;return {begin, end};}
};

x的平方根

  • 题目链接

x的平方根icon-default.png?t=O83Ahttps://leetcode.cn/problems/sqrtx/

  • 算法原理

  • 代码展示
class Solution {
public:int mySqrt(int x) {if(x == 0) 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;}
};

搜索插入位置

  • 题目链接

搜索插入位置icon-default.png?t=O83Ahttps://leetcode.cn/problems/search-insert-position/description/

  • 算法原理

  • 代码展示
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;}
};

山脉数组的峰顶索引

  • 题目链接

山脉数组的峰顶索引icon-default.png?t=O83Ahttps://leetcode.cn/problems/peak-index-in-a-mountain-array/description/

  • 算法原理

  • 代码展示
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;}
};

寻找峰值

  • 题目链接

寻找峰值icon-default.png?t=O83Ahttps://leetcode.cn/problems/find-peak-element/

  • 算法原理

  • 代码展示
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]){left = mid + 1;}else{right = mid;}}return left;}
};

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

  • 题目链接

寻找旋转排序数组中的最小值icon-default.png?t=O83Ahttps://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/description/

  • 算法原理

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

点名

  • 题目链接

点名icon-default.png?t=O83Ahttps://leetcode.cn/problems/que-shi-de-shu-zi-lcof/description/

  • 算法原理

  • 代码展示
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;}}// if(left == records.size() - 1 && records[left] == left) return left + 1;// else return left;return left == records[left] ? left + 1 : left;}
};

相关文章:

【C++算法】二分查找

二分查找 题目链接 二分查找https://leetcode.cn/problems/binary-search/ 算法原理 代码步骤 代码展示 class Solution { public:int search(vector<int>& nums, int target) {int left 0, right nums.size() - 1;while(left < right){// 防止溢出int mid …...

红日靶场通关

初始准备 首先是网络配置&#xff0c;看教程来的&#xff0c;我配置完的效果如下 windows7&#xff1a;(内&#xff1a;192.168.52.143 / 外&#xff1a;192.168.154.136) windows2003&#xff1a;(内&#xff1a;192.168.52.141)windows2008:&#xff08;内&#xff1a;192.…...

用Python爬虫制作一个简易翻译器

我们通常是通过requestsBS4的方法来获取网页内容&#xff0c;这种方法导入模块较多&#xff0c;速度相对有点儿慢&#xff0c;此时我们可以用requests的post方法向指定服务器发送请求&#xff0c;获取数据后格式化为json&#xff0c;然后获取相关键值。这种方法用到了requests和…...

Shader Graph Create Node

一、Artistic 1、Adjustment 1)、Channel Mixer(通道混合) 根据权重对每个通道进行混合。 Contrast(对比度) 可调整对比度 调整对比度可以改变图像的鲜明度和层次感。增加对比度会使图像中的明暗差异更加显著&#xff0c;使图像看起来更加清晰、明亮&#xff1b;减少对比…...

共模干扰的形成和滤除

1、共模就是共同对地的干扰&#xff1a; 如图&#xff0c;我们可以看到共模的原理图。UPQ就是共模电压&#xff0c;ICM1 ICM2 就是共模电流。 ICM1 ICM2 大小不一定相同&#xff0c;方向相同。 2、共模信号和差模信号的区别&#xff1a; 通常电源线有三根线&#xff1a;火线L、…...

(计算机网络)运输层

一.运输层的作用 运输层&#xff1a;负责将数据统一的交给网络层 实质&#xff1a;进程在通信 TCP&#xff08;有反馈&#xff09;UDP&#xff08;无反馈&#xff09; 二.复用和分用 三. TCP和UDP的特点和区别 进程号--不是固定的 端口号固定--mysql--3306 端口--通信的终点 …...

基于深度学习的信号滤波:创新技术与应用挑战

一、引言 1.1 研究背景 随着科技的不断发展&#xff0c;信号处理领域面临着越来越复杂的挑战。在众多信号处理技术中&#xff0c;基于深度学习的信号滤波技术逐渐崭露头角&#xff0c;成为研究的热点。 基于深度学习的信号滤波在信号处理领域具有至关重要的地位。如今&#…...

MFC工控项目实例之十一板卡测试信号输入界面

承接专栏《MFC工控项目实例之十添加系统测试对话框》 相关代码 1、在BoardTest.h文件中添加代码 class CBoardTest : public CDialog { // Construction public:CBoardTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnStart[16];CWinThread* pThread…...

sql中索引查看是否生效

在pg数据库中有多种索引存在&#xff0c;在一般情况下我们取使用普通索引 以下是一些常见导致索引未命中的原因和优化策略 1.如果查询中的条件与索引字段的顺序不匹配&#xff0c;或者索引字段没有完全包含在查询条件中&#xff0c;索引可能不会被使用。 2.在查询中使用函数…...

SpringBoot常见面试题

1.请说一说Spring Boot的自动装配原理&#xff1f; SpringBootApplication EnableAutoConfiguration AutoConfigurationImportSelector组件 SpringFactoriesLoader读取 &#xff08;1&#xff09;META-INF/spring.factories 或者 &#xff08;2&#xff09;org.springframework…...

springboot优雅停机无法关闭进程,kill无法停止springboot必须kill -9,springboot线程池使用

背景最近项目在jenkins部署的时候发现部署很慢&#xff0c;查看部署日志发现kill命令执行后应用pid还存在&#xff0c;导致必须在60秒等待期后kill -9杀死springboot进程 应用环境 springboot <dependency><groupId>org.springframework.boot</groupId>&l…...

【系统架构设计师-2015年真题】案例分析-答案及详解

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【材料1】问题1问题2【材料2】问题1问题2问题3【材料3】问题1问题2问题3【材料4】问题1问题2问题3【材料5】问题1问题2问题3【材料1】 阅读以下关于软件架构评估的说明,在答题纸上回答问题1和问题2。 【说明】某软件…...

MongoDB设置系统服务启动教程

1、编辑mongodb.service文件 将MongoDB设置成系统服务&#xff0c;就可以通过systemctl进行启动停止重启&#xff0c;在目录/etc/systemd/system下编写mongodb.service文件&#xff1a; [Unit] DescriptionMongoDB Database Server Documentationhttps://www.mongodb.com/docs…...

mysql学习教程,从入门到精通,MySQL WHERE 子句(10)

1、SQL WHERE 子句 在本教程中&#xff0c;您将学习如何使用SQL从表中选择特定记录。 根据条件选择记录 在上一章中&#xff0c;我们学习了如何从表或表列中获取所有记录。但是&#xff0c;在现实世界中&#xff0c;我们通常只需要选择&#xff0c;更新或删除满足某些条件的那…...

设计模式】Listener模式和Visitor模式的区别

文章目录 前言一、介绍Listener模式Visitor模式 二、代码实现2.1 Listener模式的Java实现2.2Listener模式的Go实现2.3Visitor模式的Java实现2.4Visitor模式的Go实现 三、总结 前言 在软件设计中&#xff0c;设计模式是解决特定问题的通用解决方案。Listener模式和Visitor模式是…...

基于事件序列的数据获取

Data Get 31670 /S Update 2 AI_PC 3Mins /次 Import "Hggw" PI Data AABB020240908_115221_31781 AABB020240908_115521_31781 AABB020240908_115821_31781 1、From PIdata Copy 2 AI PC 2、AI PC UI Chart & Logic OK NG Pump&#xff1a;&#x…...

太速科技-基于XC7Z100+AD9361的双收双发无线电射频板卡

基于XC7Z100AD9361的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100AD9361的双收双发无线电射频板卡是基于Xilinx ZYNQ FPGA和ADI的无线收发芯片AD9361开发的专用功能板卡&#xff0c;用于4G小基站&#xff0c;无线图传&#xff0c;数据收发等领域。 二、板卡…...

探索UWB技术的独特优势:实现高精度定位

UWB定位技术是一种利用无线信号进行精确位置定位的技术&#xff0c;它利用超宽带无线电信号通过测量信号的到达时间、相位差和信号能量等参数来确定物体的精确位置。 UWB定位技术具有多种优势&#xff0c;首先&#xff0c;它具有较高的定位精度&#xff0c;可实现毫米级的精确…...

软件安装攻略:Sublime Text 下载安装和使用教程

Sublime Text 下载安装和使用教程 Sublime Text是一个流行的跨平台文本编辑器&#xff0c;它具有以下一些主要功能和特点&#xff1a; &#xff08;1&#xff09;简洁的界面和快速的速度&#xff1a;Sublime Text拥有简约干净的界面&#xff0c;启动和响应速度很快。 &#…...

ip地址为什么要轮换

在网络世界中&#xff0c;IP地址是设备与互联网通信的身份证。然而&#xff0c;单一的IP地址可能会因为各种原因而需要轮换。IP轮换是指在一定时间内更换正在使用的IP地址&#xff0c;这一策略在多种网络应用中发挥着重要作用。本文将探讨IP地址轮换的原因、其带来的优势以及实…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...

ubuntu清理垃圾

windows和ubuntu 双系统&#xff0c;ubuntu 150GB&#xff0c;开发用&#xff0c;基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小&#xff0c;发现 .cache 有26GB&#xff0c;.local 有几个GB&am…...

循环语句之while

While语句包括一个循环条件和一段代码块&#xff0c;只要条件为真&#xff0c;就不断 循环执行代码块。 1 2 3 while (条件) { 语句 ; } var i 0; while (i < 100) {console.log(i 当前为&#xff1a; i); i i 1; } 下面的例子是一个无限循环&#xff0c;因…...

Modbus转Ethernet IP深度解析:磨粉设备效率跃升的底层技术密码

在建材矿粉磨系统中&#xff0c;开疆智能Modbus转Ethernet IP网关KJ-EIP-101的应用案例是一个重要的技术革新。这个转换过程涉及到两种主要的通信协议&#xff1a;Modbus和Ethernet IP。Modbus是一种串行通信协议&#xff0c;广泛应用于工业控制系统中。它简单、易于部署和维护…...