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

文章目录

      • 题目描述
      • 法一 二分查找

题目描述

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

法一 二分查找

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

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;
}

在这里插入图片描述

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;
}

在排序数组中查找元素的第一个和最后一个位置——力扣34_第3张图片
在排序数组中查找元素的第一个和最后一个位置——力扣34_第4张图片
在排序数组中查找元素的第一个和最后一个位置——力扣34_第5张图片
在这里插入图片描述

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};
	}

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

你可能感兴趣的:(算法刷题笔记,leetcode,算法,数据结构,c++,职场和发展)