LeetCode——二分法

力扣解题思路:二分法 纠错记录 二分法 每次做题,只要看到题目要求说时间复杂度要不能大于O(logn)我就脑瓜子疼,因为一般这种情况就是需要用到二分法了,二分法的原理其实很简单,就是一次次的找数组中间的mid数,验证其是否满足要求,然后根据实际情况来移动low或者high。然而二分法最头疼的不在于他的原理,而在于他的边界条件的取值,例如while循环的条件中应该是l<h呢还是l<=h呢,以及当mid不满足条件后是h = mid还是h=mid+1还是l = mid还是l=mid+1呢? 其实判断这个也是有一定规律的,比如当mid 阅读详情

二分法模板:

public calss Solution{
	public int search(int[] nums,int target){
		int len=nums.length;
		int left=0;
		int right=len-1;
		while(left<right){//在退出循环的时候,一定有left==right成立,此时返回left或者right都可以
			int mid=(left+right+1)>>>1;//先取左中位数,以后根据分支的逻辑,决定是否要修改成右中位数
			if(nums[mid]>target){
				right=mid-1;
			}else{
				left=mid;//左边界不收缩
			}
		}
		if(nums[left]==target){
			return left;
		}
		return -1;
	}
}

在循环内只写两个分支,一个分支排除中位数,另一个分支不排除中位数,循环中不单独对中位数作判断。存在两个模板代码:

if(排除中位数的逻辑){
	left=mid+1;//目标元素至少是中位数,但不包括中位数
}else{
	right=mid;//目标元素之多是中位数,有可能取到中位数
}

if(排除中位数的逻辑){
	right=mid-1;//目标元素至多是中位数,但不包括中位数
}else{
	left=mid;//目标元素至少是中位数,有可能取到中位数
}

如何选择是左中位数还是右中位数?
1、如果分支的逻辑,在选择左边界的时候,不能排除中位数,那么中位数就选“右中位数”,只有这样区间才会收缩,否则进入死循环
2、同理,如果分支的逻辑,在选择右边界的时候,不能排除中位数,那么中位数就选“左中位数”,只有这样区间才会收缩,否则进入死循环

旋转数组

33.搜索旋转排序树组
81.搜索旋转排序数组II
153.寻找旋转排序数组中的最小值

搜索二维矩阵

74.搜索二维矩阵
240.搜索二维矩阵II

其他

300.最长上升子序列(DP+二分查找->O(N)=NlogN)
658.找到K个最接近的元素
911.在线选举
718.最长重复子数组
378.有序矩阵中第K小的元素
497.非重叠矩形中的随机点
475.供暖器
167.两数之和II—输入有序数组
287.寻找重复数
704.二分查找
209.长度最小的子数组
69.x的平方根
1011.在D天内送达包裹的能力
162.寻找峰值
981.基于时间的键值存储
222.完全二叉树的节点个数
50.Pow(x,n)
436.寻找右区间
349.两个数组的交集
350.两个数组的交集II
34.在排序数组中查找元素的第一个和最后一个位置
528.按权重随机选择
454.四数相加II
392.判断子序列
29.两数相除
374.猜数字大小
275.H指数II
278.第一个错误的版本
367.有效的完全平方数
441.排列硬币
35.搜索插入位置
744.寻找比目标字母大的最小字母
852.山脉数组的峰顶索引

算法:02 二分法模板及 Leetcode 二分法全解 Leetcode 二分法全解 目录Leetcode 二分法全解前言1、何时应该想到二分法2、在区间内查找符合条件的元素索引 前言  本篇博客旨在归纳总结二分法问题,从 Leetcode 上的题目来看使用二分法时的注意事项   1、何时应该想到二分法 二分法的题目,在题干处都有十分明显的暗示: 限定了要搜索的数组是 有序的、部分有序的、非完全无序的 限定了算法复杂度是 O(log n)... 阅读详情

相关推荐

开启力扣刷题之路 >【数组】> 二分法

【代码随想录】力扣刷题攻略 <<< 这是大佬的git链接,感兴趣的小伙伴一起追随大佬的脚步,少走弯路噢。---- 搬运工是我了。。。 根据大佬总结的刷题攻略开始力扣刷题!冲鸭! 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入...

爱写bug的王六六 585

【算法题】LeetCode-硬币划分问题-(动态规划、斜率优化、空间压缩)

硬币划分问题-斜率优化-空间压缩

x0919的博客 2805

海康摄像头V3.4 升级改造VUE3

摘要:本文介绍了一个基于Vue3的海康威视摄像头组件封装方案。针对官方仅提供HTML版本SDK的问题,作者通过封装实现了Vue3组件化集成,解决了iframe/webview引入方式的弊端。组件核心功能包括实时预览、本地录像、录像下载、截图抓拍等,并优化了SDK初始化逻辑(单例模式)、定位问题修复和错误处理机制。关键技术点包括:1)SDK插件容器定位修复;2)录像下载进度监控;3)多格式图片数据处理;4)多窗口场景下的SDK实例管理。该组件可直接通过npm安装使用,提供了完善的API和事件接口,显著提升了海

LINLINLINShi的博客 113

算法入门之二分法(LeetCode)

算法入门之二分法 LeetCode前言1.原理2. 模板2.1模板内容2.2 模板区别与分析3.案例分析4. 相关链接 前言 现实生活中,从大量的数据中查找一个特定的信息是一个常见的生活问题,比如google一个未知的一个事物。基于这样的生活问题,也产生了很多搜索算法,例如顺序查找法,二分法等等。针对特定的问题我们需要选用合适的算法来大大减少搜索的时间。本博客将简单介绍一下针对有序数据的二分查找算法的原理和实现方法。 1.原理 二分法又叫折半查找法,可以简单理解为:在一堆有序数据中每一次查找根据条件取掉一半

weixin_44530917的博客 2887

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略)

本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。

weixin_28692867的博客 505

Keil环境下单片机串口通信实战:如何用printf发送中文(附完整代码)

本文详细解析了在Keil开发环境下,单片机通过串口通信发送中文信息时产生乱码的根本原因及解决方案。核心在于理解并统一编码(如GB2312或UTF-8),并正确重定向printf函数。文章提供了针对STC89C52和STM32F103的完整代码示例,涵盖工程配置、编码设置、调试技巧,帮助开发者实现稳定可靠的中文串口输出。

weixin_29168675的博客 467

Leetcode刷题笔记:二分查找算法

LeetCode 对于数组查询算法之一的二分查找算法的简单认识。

yumuing‘s blog 1569

【机器人】转动的指数坐标表示心得理解

转动的指数坐标表示心得理解1.前言2.指数坐标表示旋转矩阵3.原理推导4.矩阵对数、矩阵指数 1.前言 最近因为项目需求,又学习了一点机器人学的东西,参考书籍为《现代机器人学》,该书采用指数坐标、旋量的方式来对机器人进行描述和运动学、动力学建模,让我对机器人有了更深的理解,也是弥补DH参数建模复杂的缺陷,虽然DH法只用4个参数,而旋量需要更多,但是它骚啊! 本文是我学习了转动的指数坐标表示的一个心得体会,如有问题请多多包涵。 2.指数坐标表示旋转矩阵 指数坐标可以用来表示求解旋转矩阵,其原理非常简单巧妙,需

要恰饭得嘛 2329

【leetcode】二分法

目录 方法总结 704. 二分查找 852. 山脉数组的峰顶索引 162. 寻找峰值 278. 第一个错误的版本 374. 猜数字大小 35. 搜索插入位置 方法总结 笔者目前的水平给出两种二分法的模板。 模板一 这种是最简单的二分法的模板,如下。其特点是: 循环可以继续的条件是 while (left <= right) ,表示当 left == right 成立的时候,还有一个元素,即下标 left(right)位置的元素还没有看到,需要继续查看这个元素的值...

Mr_health的博客 1324

微波技术仿真:微波谐振器分析_(2).微波谐振器理论

谐振器是一种能够在特定频率范围内存储和释放电磁能量的器件。在微波频段,谐振器通常用于滤波、频率选择和能量存储等应用。一个理想的谐振器在谐振频率下能够存储无限大的能量,但在实际应用中,由于损耗的存在,谐振器的性能会受到一定限制。微波谐振器在微波通信、雷达系统、微波测量和微波电路设计等领域中发挥着重要作用。谐振器的设计需要考虑多个因素,包括谐振频率的精确控制、损耗的最小化、频率稳定性的提高和小型化设计。通过理论分析和仿真工具的使用,可以有效优化谐振器的性能,满足实际应用的需求。

2401_87715305的博客 934

【PCL常用分割器】SACSegmentation

是一种基于采样一致性(Sample Consensus)的点云分割方法。它通过从点云中选取少量样本,拟合参数化几何模型(如平面、圆柱),并评估所有点与模型的误差一致性,最终选择内点集合最优的模型作为分割结果。与其他分割器(Region Growing、EuclideanClusterExtraction)不同,它不依赖空间连通性,而是依赖几何一致性。

yijiujiusan的博客 1310

leetcode数组刷题(九)——二分法

leetcode数组刷题(九)——二分法

xxp的博客 568

如何借助GPT- 6 写好一篇论文:从引言到参考文献完整步骤(附专业提示词)

七哥就结合这篇文章的写作思路,依次拆解引言、方法、结果、讨论、摘要、标题和参考文献分别应该怎么写,同时也聊聊,在每一个环节里,我们可以怎样合理借助 GPT-6,让论文写作变得更清晰、更高效。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。8、不修改、不补写、不猜测任何样本量、阈值、剂量、设备型号、参数或统计方法,所有缺失但影响方法完整性的信息统一标记为【待作者确认】、检查方法中设定的每一个分析项目能否在后续结果章节找到对应位置。

智能AI让学术科研更容易 111

力扣(leetcode)题目总结——二分法篇

本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目,一共100多道题,每道题都给出了非常详细的解题思路、算法步骤、代码实现。因为力扣题目顺序是随机的,并没有按照算法分类,导致同一类型的算法强化训练不够。所以本系列文章就是来帮你完成算法分类,针对每种算法做强化训练,保证让你以后遇到题目直接秒杀。本篇文章主要是针对二分法相关的算法题,一次性帮你搞定所有二分法题!

weixin_46571171的博客 1616

188、LLC谐振变换器的样机调试实战(EMI测试)

本文分享了LLC谐振变换器EMI调试的实战经验。作者通过300W电源案例,指出LLC的EMI问题主要来自谐振腔共模电流和死区振铃,并提出三板斧解决方案:优化功率回路布局、合理选择共模电感、正确配置X/Y电容。文章详细分析了谐振电容位置、MOSFET走线、变压器屏蔽等关键设计要点,并列举示波器探头、滤波器接地等常见误区。最后强调EMI调试70%依赖布局优化,建议预扫测试、数据记录并保留6dB余量。全文以实际案例贯穿,为LLC电源EMI设计提供了实用指导。

Jack010169的博客 57

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

力扣数组之二分法解题

注意此处的双指针,并不是一定代表就是指针,只是一种思路的叫法而已。双指针,顾名思义就是有引入两个跟指针一样的东西来解决数组的覆盖问题。

2301_78138281的博客 507

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Leetcode 之二分法总结

二分法是查找问题中的常用方法, 也是一个写得差不多很容易, 写得正确不那么容易的问题. 下面针对在刷二分法中的一些问题进行小结, 本文章参考了如下的资料 :用“排除法”写二分问题, 以及二分查找算法细节详解. 感谢这两位同学的分享, 受益良多. 首先二分法通常使用的前提是 目标数组是有序的. 二分法基本模版 在学习数据结构的查找算法时, 一定会给出如下的二分法基本模版 : c...

mrbm_lj的博客 769

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

力扣之二分法

这里其实可以自己动手画画,如果找不到target,最后的right是小于left的,而且left = right + 1,left的位置就是第一个大于target的数字的位置,就是target要插入的位置。这里与直接二分法稍微不同,存在数组中并没有target,还要找到target插入的位置,这里用了一句return left就解决了。今天,学习了二分法,详细内容见。

m0_53573725的博客 299

力扣(leetcode) 278. 第一个错误的版本 (二分法)

题目在这:https://leetcode-cn.com/problems/first-bad-version/ 题目分析: 也不知道大家有没有理解题目。 给了一个数组,里面存放了每个版本号 像这样:[1,2,3,4,5] 假设该版本从2号开始出错,即 2,3,4,5都是错误版本。 题目会给你一个 n 假设n = 5 则要我们找到一开始出错的版本。即2号版本。 题目中判断该版本号是否出错是调用一个函数,函数返回true则表示出错。 思路分析: 一眼看~肯定二分法解决。 关于二分法的详细使用说明大家可以看我

深度不学习!!的博客 2074

leetcode二分法合集

就是为了干倒二分题目。 题目 475. Heaters Winter is coming! Your first job during the contest is to design a standard heater with fixed warm radius to warm all the houses. Now, you are given positions of houses...

weixin_30686845的博客 201

力扣69. x 的平方根(java二分法)

力扣69. x 的平方根(java二分法) 思路: 只要是 >=4 的数,平方根肯定小于等于它的一半,根据这个思路,我们可以选择二分法。 public int mySqrt(int x) { //排除影响条件 if(x == 0){ return 0; } if(x < 4){ ...

a1106103430的博客 500

力扣Day2: 二分法 -- 704、2529、35、34

二分法目的:在一个数组里寻找target注意:考虑左闭右闭区间 设置时考虑区间是否有效 是否在区间里面注意事项:一般采用左闭右开或者闭区间的想法。

ningyu9843的博客 1060

玩转二分法(python版)——leetcode二分法题总结【简单易懂】

在正式写总结前,我想说一下我踩过的那些坑,当时脑袋都要晕掉了,于是花了两天时间搞明白了二分法,写了这篇总结。 我踩过的那些坑:之前采用while left <= right,经常遇到死循环。而且代码分支很多,经常考虑不到特殊情况,最后把自己绕晕了到底有多少种特殊情况。两天得此总结。 二分法【三步走】方法 1、先确定边界。一般情况下left=0,right=len(nums)-1是数组的...

weixin_42723548的博客 2276

LeetCode | 二分法题型详解+图解

在做 LeetCode 题时,可以通过以下几个维度来判断。下面是一些,帮助你判断是否可以或应该使用二分查找:1.。2.数据有序 or 可推导出有序逻辑3.题目中有“最值”或“满足某个条件的最小值/最大值”描述4.可能的输入规模较大(例如 1e5、1e9)且解空间连续。

weixin_44649780的博客 1418

LeetCode01_二分法专题

一.二分法基本思想 二分法做题流程(重要): 1.确定二分的边界 2.编写二分的代码框架 3.设计一个check(性质) 4.判断一下区间如何更新 5.如果更新方式写的是l = mid, r = mid - 1,那么就在计算mid的时候加上1 二.二分法典型习题 1.LeetCode-69 求解Sqrt(x) 解题思路:因为求的是sqrt(x),则x的取值范围是[0, x],因此在此...

CurryCoder的个人博客 357

LeetCode 二分法查找 (Python3)

LeetCode Q33-Q35Q33 搜索旋转排序数组 Search in Rotated Sorted ArrayQ34 在排序数组中查找元素的第一个和最后一个位置 Find First And Last Position of Element in Sorted ArrayQ35 搜索插入位置Q33 - Q35 一些笔记 Q33 搜索旋转排序数组 Search in Rotated Sorted Array 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,

SandWHaleXYl的博客 320
上一篇: LeetCode——分治
下一篇: LeetCode——回溯
K. Bob
博客等级 码龄8年 82粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值