LeetCode代码链接:https://leetcode.cn/problems/binary-search/题目:给定一个 n 个元素有序的(升序)整型数组 nums和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:输入:nums=[-1,0,3,5,9,12],target=2输出:-1解释:2不存在nums中因此返回-1思路这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元
目录简介基本步骤第一种二分第二种二分 例题搜索插入位置数的范围总结 简介🥥二分查找,又叫折半查找,通过找到数据二段性每次都能将原来的数据筛选掉一半,通过这个算法我们能够将一个一个查找的 O(n) 的时间复杂度优化到 O(logn) ,极大地提升了查找的效率。但使用二分进行查找必须要有一个前提,那就是查找的区间必须是有序的。如数组并非有序,则找不到该数组的的二段性。下面一起看看二分的基本步骤吧。基本步骤找一个区间[L,R],使答案一定在该区间中。找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。分析中点 mid 在该判断条件下是否成立,如果成立,考虑答案在哪个区间,如果不
目录简介基本步骤第一种二分第二种二分 例题搜索插入位置数的范围总结 简介🥥二分查找,又叫折半查找,通过找到数据二段性每次都能将原来的数据筛选掉一半,通过这个算法我们能够将一个一个查找的 O(n) 的时间复杂度优化到 O(logn) ,极大地提升了查找的效率。但使用二分进行查找必须要有一个前提,那就是查找的区间必须是有序的。如数组并非有序,则找不到该数组的的二段性。下面一起看看二分的基本步骤吧。基本步骤找一个区间[L,R],使答案一定在该区间中。找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。分析中点 mid 在该判断条件下是否成立,如果成立,考虑答案在哪个区间,如果不
文章目录一、模板示范二、模板三、细节说明为什么L的初始值为-1,R的初始值为N为什么循环结束的条件是while(L+1!=R)?不会陷入死循环最后四、 例题one[数的范围](https://www.acwing.com/problem/content/791/) 例题two[数的三次方根](https://www.acwing.com/problem/content/792/)五、相关学习的视频链接-[为啥二分查找容易出错](https://www.bilibili.com/video/BV1d54y1q7k7?spm_id_from=333.337.search-card.all.cl
文章目录一、模板示范二、模板三、细节说明为什么L的初始值为-1,R的初始值为N为什么循环结束的条件是while(L+1!=R)?不会陷入死循环最后四、 例题one[数的范围](https://www.acwing.com/problem/content/791/) 例题two[数的三次方根](https://www.acwing.com/problem/content/792/)五、相关学习的视频链接-[为啥二分查找容易出错](https://www.bilibili.com/video/BV1d54y1q7k7?spm_id_from=333.337.search-card.all.cl
TPwls视频优质讲解题意:很清晰,需要注意的点是,青蛙要往返2x次,石头的下标从h1−hn−1h_1-h_{n-1}h1−hn−1,左岸看作h0h_0h0、右岸hnh_nhn。思路:首先很显然的一眼二分答案。二分青蛙的跳跃能力,找到最大的能过河的情况。难点在于check函数如何处理。需要基于贪心先得出几个结论:不管跳跃能力为多少,青蛙在i位都会尽可能往右跳,如果j位承载不下了,就让j-1位,j-2位承载…往返2x次,跟从左到右跳2x次本质是一样的我们只需要用一个数组记录每个石头位置能承载的最大跳跃次数(在自身高度限制下),for循环对于每个i往右边传递自身的承载。传递到最后,右岸hn
TPwls视频优质讲解题意:很清晰,需要注意的点是,青蛙要往返2x次,石头的下标从h1−hn−1h_1-h_{n-1}h1−hn−1,左岸看作h0h_0h0、右岸hnh_nhn。思路:首先很显然的一眼二分答案。二分青蛙的跳跃能力,找到最大的能过河的情况。难点在于check函数如何处理。需要基于贪心先得出几个结论:不管跳跃能力为多少,青蛙在i位都会尽可能往右跳,如果j位承载不下了,就让j-1位,j-2位承载…往返2x次,跟从左到右跳2x次本质是一样的我们只需要用一个数组记录每个石头位置能承载的最大跳跃次数(在自身高度限制下),for循环对于每个i往右边传递自身的承载。传递到最后,右岸hn
前言二分法也就是二分查找,它是一种效率较高的查找方法。假如你们公司新来了一个人,叫张三,他是你们公司第47个人,过了一段时间后,有些人呢看张三不爽,离职了,那这时候张三肯定不是公司第47个人了,怎么样才知道张三排第几呢,下面我们用二分法把他找出来 思路给你一本1000页的书籍,随机给定一个页码,如何用最快的方式找到它?如果一页一页逐步去查找,则最高需要查找一千次!那我们如何用二分法来解决这个问题呢?二分法的关键就是二分这个词。 步骤1:设定一个页码作为中心点来将1000页分为两份,中位数的作用就是每次缩小一半查找范围,即达到开方的效果。即可以用(首位+末位)/2=中位数。 步骤2:将需要查找的
前言二分法也就是二分查找,它是一种效率较高的查找方法。假如你们公司新来了一个人,叫张三,他是你们公司第47个人,过了一段时间后,有些人呢看张三不爽,离职了,那这时候张三肯定不是公司第47个人了,怎么样才知道张三排第几呢,下面我们用二分法把他找出来 思路给你一本1000页的书籍,随机给定一个页码,如何用最快的方式找到它?如果一页一页逐步去查找,则最高需要查找一千次!那我们如何用二分法来解决这个问题呢?二分法的关键就是二分这个词。 步骤1:设定一个页码作为中心点来将1000页分为两份,中位数的作用就是每次缩小一半查找范围,即达到开方的效果。即可以用(首位+末位)/2=中位数。 步骤2:将需要查找的
🧛♂️个人主页:杯咖啡💡进步是今天的活动,明天的保证!✨目前正在学习:SSM框架,算法刷题🙌牛客网,刷算法过面试的神级网站,用牛客你也牛。👉免费注册和我一起学习刷题👈🐳希望大家多多支持🥰一起进步呀!😎Loveistheonethingwe’arecapableofperceivingthattranscendstimeandspace.爱是我们唯一能够感知的可以超越时空维度的事物。-《星际穿越》✨今日算法三题1.特殊数组的特征值2.在D天内送达包裹的能力3.咒语和药水的成功对数文章目录✨今日算法三题1.特殊数组的特征值题目描述思路详解代码与结果2.在D天内送达包裹的能力题目描述思路详解代码与