首页 > 试题广场 >

二分查找

[编程题]二分查找
  • 热度指数:155398 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
请实现有重复数字的升序数组的二分查找。
输出在数组中第一个大于等于查找值的位置(下标从1开始算起),如果数组中不存在这样的数(指不存在大于等于查找值的数),则输出数组长度加一。
示例1

输入

5,4,[1,2,4,4,5]

输出

3

说明

输出位置从1开始计算     
示例2

输入

5,4,[1,2,3,3,5]

输出

5

说明

虽然数组中没有4,但 5 ≥ 4 ,所以返回5对应的位置,刚好也是5。  
头像 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 { /** 展开全文

问题信息

上传者:牛客332641号
难度:
171条回答 14501浏览

热门推荐

通过挑战的用户

二分查找