美文网首页
二分查找大于等于

二分查找大于等于

作者: help_youself | 来源:发表于2022-07-06 18:23 被阅读0次
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
    int binary_search(std::vector<int>&num,int left,int right,int t){
        while(left<=right){
            int mid=(left+right)/2;
            if(t==num.at(mid)){
                return mid;
            }else if(num.at(mid)<t){
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        return -1;
    }
    int locate_geq(std::vector<int> &num,int t){
        int n=num.size();
        int left=0,right=n-1;
        if(num[left]>=t){
            return 0;
        }
        if(num[right]<t){
            return -1;
        }
        while(left<right){
            int mid=(right+left)/2;
            if(num.at(mid)>=t){
                right=mid;
            }else{
                left=mid+1;
            }
        }
        return left;
    }
};
int main(){
    std::vector<int> data={-10,-8,1,3,5,6};
    std::sort(data.begin(),data.end());
    Solution so;
    int r=so.locate_geq(data,6);
    std::cout<<r<<std::endl;
    r=so.binary_search(data,0,data.size()-1,3);
    std::cout<<r<<std::endl;
    return 0;
}

[1] C++STL中的upper_bound()函数的使用

相关文章

  • 二分查找(下):二分查找的4个变形问题(3,4)

    二分查找(下):二分查找的4个变形问题(3,4) 查找第一个 大于等于给定值 的元素 查找最后一个 小于等于给定值...

  • 二分查找大于等于

    [1] C++STL中的upper_bound()函数的使用[https://blog.csdn.net/qq_3...

  • 二分查找(下)

    4种常见的二分查找变形问题 查找第一个值等于给定值的元素 查找最后一个值等于给定值的元素 查找第一个大于等于给定值...

  • 二分查找下

    4种常见的二分查找变形问题 查找第一个值等于给定值的元素 查找最后一个值等于给定值的元素 查找第一个大于等于给定值...

  • 二分查找(下)

    4种常见的二分查找变形问题 查找第一个值等于给定值的元素 查找最后一个值等于给定值的元素 查找第一个大于等于给定值...

  • 二分查找(变体)

    今天写4种二分查找的变体分别是查找第一个值等于给定值的元素查找最后一个值等于给定值的元素查找第一个值大于等于给定值...

  • 二分查找

    二分法查找的原理很简单,先和中间的比较,如果等于就直接返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则...

  • 算法-查找-二分查找变形

    经典的二分查找很好理解,也很好实现,那一起来看下二分查找的变形问题。常见的二分查找变形问题有: 查找第一个等于待查...

  • 变异二分查找解题过程

    0.问题描述 题目描述请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存...

  • 二分法查找有序数组中大于等于v的第一个数

    题目要求:有序数组L,利用二分法查找数组中第一个大于等于v的数,如果不存在,则返回-1

网友评论

      本文标题:二分查找大于等于

      本文链接:https://www.haomeiwen.com/subject/pvvybrtx.html