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

二分法心得

原教程见labuladong

首先,我们建议左右区间全部用闭区间。那么第一个搜索区间:left=0; right=len-1;

进入while循环,结束条件是right<left

然后求mid,如果nums[mid]的值比target大,说明target在左边,收缩搜索空间:right=mid-1。反之,target在右边,收缩搜索空间:left=mid+1

注意计算mid时,不要用mid=(left+right)/2,这样可能溢出,要用mid=left+(right-left)/2

以上是经典二分法查找。


但是如果要寻找左右边界呢?比如在排序数组中寻找某元素的左右边界。

这时外面的框架不变,还是闭区间,还是一样的循环结束条件。

但是里面的搜索条件变了。比如搜索左边界的话,我们的nums[mid]==target,这时我们需要往左收缩区间,也就是right=mid-1。其他两个条件不变,还是在寻找target。

所以他们最终会找不到target,最后一次是left=mid+1,也就是左边界的位置,返回left即可。

访问右边界是一样的原理。

这里注意,如果整个数组里就不存在target,target是一个很大的数,那么最终left=len,访问溢出了。所以要判断 left==len?。

相关文章:

二分法心得

原教程见labuladong 首先&#xff0c;我们建议左右区间全部用闭区间。那么第一个搜索区间&#xff1a;left0; rightlen-1; 进入while循环&#xff0c;结束条件是right<left。 然后求mid&#xff0c;如果nums[mid]的值比target大&#xff0c;说明target在左边&#xff0c;…...

Linux安装Docker完整教程

背景最近接手了几个项目&#xff0c;发现项目的部署基本上都是基于Docker的&#xff0c;幸亏在几年前已经熟悉的Docker的基本使用&#xff0c;没有抓瞎。这两年随着云原生的发展&#xff0c;Docker在云原生中的作用使得它也蓬勃发展起来。今天这篇文章就带大家一起实现一下在Li…...

备份基础知识

备份策略可包括&#xff1a;– 整个数据库&#xff08;整个&#xff09;– 部分数据库&#xff08;部分&#xff09;• 备份类型可指示包含以下项&#xff1a;– 所选文件中的所有数据块&#xff08;完全备份&#xff09;– 只限自以前某次备份以来更改过的信息&#xff08;增量…...

C++学习记录——팔 内存管理

文章目录1、动态内存管理2、内存管理方式operator new operator delete3、new和delete的实现原理1、动态内存管理 C兼容C语言关于内存分配的语法&#xff0c;而添加了C独有的东西。 //int* p1 (int*)malloc(sizeof(int));int* p1 new int;new是一个操作符&#xff0c;C不再需…...

Spring事务失效原因分析解决

文章目录1、方法内部调用2、修饰符3、非运行时异常4、try…catch捕获异常5、多线程调用6、同时使用Transactional和Async7、错误使用事务传播行为8、使用的数据库不支持事务9、是否开启事务支持在工作中&#xff0c;经常会碰到一些事务失效的坑&#xff0c;基于遇到的情况&…...

4个月的测试经验,来面试就开口要17K,面试完,我连5K都不想给他.....

2021年8月份我入职了深圳某家创业公司&#xff0c;刚入职还是很兴奋的&#xff0c;到公司一看我傻了&#xff0c;公司除了我一个测试&#xff0c;公司的开发人员就只有3个前端2个后端还有2个UI&#xff0c;在粗略了解公司的业务后才发现是一个从零开始的项目&#xff0c;目前啥…...

python学习之pyecharts库的使用总结

pyecharts官方文档&#xff1a;https://pyecharts.org//#/zh-cn/ 【1】Timeline 其是一个时间轴组件&#xff0c;如下图红框所示&#xff0c;当点击红色箭头指向的“播放”按钮时&#xff0c;会呈现动画形式展示每一年的数据变化。 data格式为DataFrame&#xff0c;数据如下图…...

【taichi】利用 taichi 编写深度学习算子 —— 以提取右上三角阵为例

本文以取 (bs, n, n) 张量的右上三角阵并展平为向量 (bs, n*(n1)//2)) 为例&#xff0c;展示如何用 taichi 编写深度学习算子。 如图&#xff0c;要把形状为 (bs,n,n)(bs,n,n)(bs,n,n) 的张量&#xff0c;转化为 (bs,n(n1)2)(bs,\frac{n(n1)}{2})(bs,2n(n1)​) 的向量。我们先写…...

二进制 k8s 集群下线 worker 组件流程分析和实践

文章目录[toc]事出因果个人思路准备实践当前 worker 节点信息将节点标记为不可调度驱逐节点 pod将 worker 节点从 k8s 集群踢出下线 worker 节点相关组件事出因果 因为之前写了一篇 二进制 k8s 集群下线 master 组件流程分析和实践&#xff0c;所以索性再写一个 worker 节点的缩…...

Bean的六种作用域

限定程序中变量的可用范围叫做作用域&#xff0c;Bean对象的作用域是指Bean对象在Spring整个框架中的某种行为模式~~ Bean对象的六种作用域&#xff1a; singleton&#xff1a;单例作用域&#xff08;默认&#xff09; prototype&#xff1a;原型作用域&#xff08;多例作用域…...

Http发展历史

1 缘起 有一次&#xff0c;听到有人在议论招聘面试的人员&#xff0c; 谈及应聘人员的知识深度&#xff0c;说&#xff1a;问了一些关于Http的问题&#xff0c;如Http相关结构、网络结构等&#xff0c; 然后又说&#xff0c;问没问相关原理、来源&#xff1f; 我也是有些困惑了…...

高级Java程序员必备的技术点,你会了吗?

很多程序员在入行之后的前一两年&#xff0c;快速学习到了做项目常用的各种技术之后&#xff0c;便进入了技术很难寸进的平台期。反正手里掌握的一些技术对于应付普通项目来说&#xff0c;足够用了。因此也会缺入停滞&#xff0c;最终随着年龄的增长&#xff0c;竞争力不断下降…...

【暴力量化】查找最优均线

搜索逻辑 代码主要以支撑概率和压力概率来判断均线的优劣 判断为压力&#xff1a; 当日线与测试均线发生金叉或即将发生金叉后继续下行 判断为支撑&#xff1a; 当日线与测试均线发生死叉或即将发生死叉后继续上行 判断结果的天数&#xff1a; 小于6日均线&#xff0c;用金叉或…...

Java读取mysql导入的文件时中文字段出现�??的乱码如何解决

今天在写程序时遇到了一个乱码问题&#xff0c;困扰了好久&#xff0c;事情是这样的&#xff0c; 在Mapper层编写了查询语句&#xff0c;然后服务处调用&#xff0c;结果控制器返回一堆乱码 然后查看数据源头处&#xff1a; 由重新更改解码的字符集&#xff0c;在数据库中是正…...

k8s核心概念—Pod Controller Service介绍——20230213

文章目录一、Pod1. pod概述2. pod存在意义3. Pod实现机制4. pod镜像拉取策略5. pod资源限制6. pod重启机制7. pod健康检查8. 创建pod流程9. pod调度二、Controller1. 什么是Controller2. Pod和Controller关系3. deployment应用场景4. 使用deployment部署应用&#xff08;yaml&a…...

Tensorflow的数学基础

Tensorflow的数学基础 在构建一个基本的TensorFlow程序之前&#xff0c;关键是要掌握TensorFlow所需的数学思想。任何机器学习算法的核心都被认为是数学。某种机器学习算法的策略或解决方案是借助于关键的数学原理建立的。让我们深入了解一下TensorFlow的数学基础。 Scalar 标…...

IT培训就是“包就业”吗?内行人这么看

大部分人毕业后选择参加职业技能培训&#xff0c;都是为了学完之后能找到好工作&#xff0c;而“就业服务”也成为各家培训机构对外宣传的重点内容。那么&#xff0c;所谓的“就业服务”就是“包就业”和“包底薪”吗&#xff1f;学完就一定能拿到offer吗&#xff1f;今天&…...

【算法】【数组与矩阵模块】顺时针旋转打印矩阵

目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过&#xff0c;但是不保证100%的测试用例&#xff0c;如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识&#xff01; 问题介绍 …...

Java中的锁概述

java中的锁java添加锁的两种方式&#xff1a;synchronized&#xff1a;关键字 修饰代码块&#xff0c;方法 自动获取锁、自动释放锁Reentrantlock&#xff1a;类 只能修饰代码块 手动加锁、释放锁java中锁的名词一些锁的名词指的是锁的特性&#xff0c;设计&#xff0c;状态&am…...

微电影行业痛点解决方案

在当下新媒体时代&#xff0c;微电影作为“微文化”的载体&#xff0c;具有“微”的特点&#xff0c;经过短短数年的快速发展&#xff0c;并获得了受众广泛的关注和喜爱&#xff0c;对人们的休闲娱乐方式也产生较大的影响。但在迅猛发展的同时也存在一些行业痛点&#xff0c;诸…...

Gmail只读命令行工具gcli:云端自动化邮件查询与SSH隧道授权方案

1. 项目概述&#xff1a;一个专为自动化场景设计的Gmail只读命令行工具 如果你和我一样&#xff0c;经常需要在没有图形界面的云服务器上处理邮件查询任务&#xff0c;那你一定对Gmail API的授权流程深恶痛绝。传统的OAuth流程要求你在浏览器里点来点去&#xff0c;但服务器上哪…...

深入解析WeChatFerry:基于RPC与进程注入的微信自动化框架

1. 项目概述&#xff1a;一个为微信自动化而生的强力引擎如果你正在寻找一个能够稳定、高效地控制微信客户端进行自动化操作的解决方案&#xff0c;那么lich0821/WeChatFerry这个项目绝对值得你花时间深入研究。它不是一个简单的消息发送工具&#xff0c;而是一个基于 RPC&…...

Zynq/ZynqMP PL端以太网实战:手把手教你用GMII to RGMII IP和EMIO打通网络(附KSZ9031 PHY驱动修改)

Zynq/ZynqMP PL端以太网实战&#xff1a;从硬件配置到驱动适配全流程解析 在嵌入式系统开发中&#xff0c;以太网通信是许多项目的核心需求。当我们需要在Zynq或ZynqMP平台上实现PL端以太网功能时&#xff0c;往往会遇到硬件IP配置和PHY驱动适配两大挑战。本文将带你完整走通从…...

自动化测试系统开关架构与继电器选型指南

1. 自动化测试系统中的开关架构选择在自动化测试系统中&#xff0c;开关架构的选择直接影响着测试效率、信号完整性和系统成本。根据测试需求和被测设备(DUT)特性&#xff0c;我们可以将开关架构分为四种基本类型。1.1 无开关架构无开关架构是最直接的连接方式&#xff0c;每个…...

如何通过命名规范降低代码维护成本:7个命名技巧提升长期项目质量

如何通过命名规范降低代码维护成本&#xff1a;7个命名技巧提升长期项目质量 【免费下载链接】naming-cheatsheet Comprehensive language-agnostic guidelines on variables naming. Home of the A/HC/LC pattern. 项目地址: https://gitcode.com/gh_mirrors/na/naming-chea…...

广义逆矩阵:从A+与A-的数学定义到工程求解实践

1. 广义逆矩阵&#xff1a;工程师的数学工具箱 第一次听说"广义逆矩阵"这个概念时&#xff0c;我正在处理一个推荐系统的评分预测问题。当时遇到一个头疼的情况&#xff1a;用户-物品评分矩阵极其稀疏&#xff0c;直接求逆根本行不通。导师轻描淡写地说&#xff1a;&…...

如何快速掌握歌词滚动姬:新手到专家的5个终极秘籍

如何快速掌握歌词滚动姬&#xff1a;新手到专家的5个终极秘籍 【免费下载链接】lrc-maker 歌词滚动姬&#xff5c;可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 还在为音乐配上精准的LRC歌词而烦恼吗&#xff1f;歌词…...

3分钟快速上手:SillyTavern如何让你成为AI聊天高手

3分钟快速上手&#xff1a;SillyTavern如何让你成为AI聊天高手 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 你是否厌倦了千篇一律的AI对话界面&#xff1f;想要一个能真正理解你需求、支…...

好用的AI软件开发选哪家

在当今数字化飞速发展的时代&#xff0c;AI软件已经成为众多企业和个人提升效率、创新业务的重要工具。然而&#xff0c;面对市场上众多的AI软件开发公司&#xff0c;如何选择一家靠谱且好用的公司成为了许多人的困扰。今天&#xff0c;我就为大家推荐广州飞进信息科技有限公司…...

NVIDIA Profile Inspector终极指南:200+隐藏参数解锁显卡性能新高度

NVIDIA Profile Inspector终极指南&#xff1a;200隐藏参数解锁显卡性能新高度 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款功能强大的显卡驱动参数调校工具&#xf…...