首页
比赛
tracker
题库
课程
竞赛讨论区
登录
/
注册
去牛客
首页
>
二分查找
33条解析
开通博客写题解
Stackingrule
发表于 2020-08-13 11:32:48
参考LeetCode 35. Search Insert Position class Solution { public: /** * 二分查找 * @param n int整型 数组长度 * @param v int整型 查找值 * @param
展开全文
王清楚
发表于 2020-11-11 16:08:02
题目要求:在有序数组 中查找第一个大于等于给定值 的位置,如果不存在,输出数组的长度 加一。先考虑这样一个问题:对于一个有序数组来说,什么情况下是不存第一个大于等于 的位置呢?即:数组中的所有数都比 小,可以写成 if(a[n-1]<v) return n+1;判完这个条件
展开全文
橙子爱吃桃子
发表于 2020-09-01 17:23:30
C++二分标准模板 class Solution { public: int upper_bound_(int n, int v, vector<int>& a) { int l = 0, r = n; while(l < r) {
展开全文
牛客289281343号
发表于 2020-09-16 15:43:28
解题思路:采用二分查找的思想解决问题,首先用两个指针标记左、右,然后用mid所指的位置与关键字比较。若小于关键字,则在其右侧继续二分查找;若大于等于关键字,且其左邻元素也大于等于该关键字,则继续在mid的左侧二分查找,否则输出mid+1.若遍历后不存在这样的值,输出n+1。 import java.
展开全文
JaxonSuzy
发表于 2020-10-10 15:01:07
首先判断有没有解,如果目标值小于数组最后一个数,那么一定有解。 改变二分查找,如果mid大于等于于目标值,可能我们的这个mid是最优的可能不是,左边还有,那么我们选择的范围就是【start,mid】
展开全文
有理想的咕咕
发表于 2020-12-09 20:15:05
解题思路: 普通二分查找即可接下来,按照流程分情况讨论1.a[mid] >= v:说明满足条件的值在[left,right]区间中赋值right = mid2.a[mid] < v:说明满足条件的值在[left+1,right]区间中赋值left= mid+13.结束条件:left
展开全文
GodcccL11
发表于 2020-12-16 07:49:26
class Solution: def upper_bound_(self , num , value , arr ): if arr[num - 1] < value: return num + 1 left=0
展开全文
小慕.
发表于 2020-12-24 19:10:55
具体思路就是查找比查找值-1的数字的右边界,也就是查找值的左边界。国际惯例,定义left节点和right节点,最后输出left节点就可以了,具体思路看代码哦,因为牛客题目清奇要求在没有匹配数字的情况下输出数组长度+1,所以写了一个看起来非常low的if函数。。。欢迎提问哦! import java
展开全文
卫宫士郎红A
发表于 2020-09-24 18:39:25
题目描述请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。示例1输入5,4,[1,2,4,4,5]输出3题目思路看到的一个大神的思路,太强了!!举例分析现在有一个100个数的数组,要查找的是56的lower_bound原始数组
展开全文
仿生佛能度电子鬼吗
发表于 2020-12-22 22:58:24
二分法边界一直处理不好?试试防御式编程 二分法有三种模板,大佬总是能灵活运用,但这就苦了我们这些菜鸡。个人的解决办法就是多判断一下边界,采取防御式编程,这样就只需要记一个模板就好了(雾 import java.util.*; public class Solution { /**
展开全文
查看本题
查看本题讨论
等你来战
查看全部
牛客小白月赛128
报名截止时间:2026-01-30 21:00
牛客周赛 Round 129
报名截止时间:2026-02-01 21:00
2026牛客寒假算法基础集训营1
报名截止时间:2026-02-03 18:00
2026牛客寒假算法基础集训营2
报名截止时间:2026-02-05 18:00
牛客2026年情人节比赛
报名截止时间:2026-02-14 21:00
扫描二维码,关注牛客
意见反馈
下载牛客APP,随时随地刷题