在排序数组中查找元素的第一个和最后一个位置——力扣34

文章目录

题目描述

法一 二分查找

cpp 复制代码
int bsearch_1(int l, int r)
{
    while (l < r)
    {
        int mid = (l + r)/2;
        if (check(mid)) r = mid;
        else l = mid + 1;
    }
    return l;
}
cpp 复制代码
int bsearch_2(int l, int r)
{
    while (l < r)
    {
        int mid = ( l + r + 1 ) /2;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    return l;
}




cpp 复制代码
vector<int> searchRange(vector<int>& nums, int target){
		if(nums.empty()) return {-1, -1};
        
        int l=0, r=nums.size()-1;
		while(l<r){
			int mid = (l+r)/2;
			if(nums[mid]>=target) r=mid;
			else l=mid+1;
		}
        if(nums[r]!=target) return {-1, -1};
		int L=r;
        l=0, r=nums.size() - 1;
		while(l<r){
			int mid = (l + r + 1)/2;
			if(nums[mid] <= target) l=mid;
			else r=mid-1;
		}
		return {L, r};
	}
相关推荐
进击的小头13 分钟前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
肉包_51134 分钟前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
Trouvaille ~1 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
HellowAmy1 小时前
我的C++规范 - 线程池
开发语言·c++·代码规范
czy87874752 小时前
const 在 C/C++ 中的全面用法(C/C++ 差异+核心场景+实战示例)
c语言·开发语言·c++
十五年专注C++开发2 小时前
MinHook:Windows 平台下轻量级、高性能的钩子库
c++·windows·钩子技术·minhook
咖丨喱2 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
罗湖老棍子2 小时前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划
fengfuyao9852 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心2 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab