首页 > 其他分享 >二分查找(灵神思路,区间范围)

二分查找(灵神思路,区间范围)

时间:2024-12-11 23:13:10浏览次数:3  
标签:二分 灵神 target nums int mid start 查找 left

class Solution {
public:
int lower(vector& nums, int target){
int n=nums.size();
int left=0;
int right=n-1;
while(left<=right){
int mid=left+(right-left)/2;
if(nums[mid]<target){
left=mid+1;
} else if(nums[mid]>=target){
right=mid-1;
}
}
return left;
}
vector searchRange(vector& nums, int target) {
int n=nums.size();
int start=lower(nums,target);
if (start == nums.size() || nums[start] != target) {
return {-1, -1}; // nums 中没有 target
}
int end=lower(nums,target+1)-1;
return {start,end};

}

};
在 lower 函数中:
int n = nums.size(); int left = 0; int right = n - 1;:初始化左右边界。
while (left <= right) {... }:二分查找的循环。
if (nums[mid] < target) {... }:如果 nums[mid] 小于 target,更新 left 为 mid + 1,使查找范围向右半部分移动。
else if (nums[mid] >= target) {... }:如果 nums[mid] 大于或等于 target,更新 right 为 mid - 1,使查找范围向左半部分移动。
return left;:最终 left 会停在第一个大于或等于 target 的元素的位置。
在 searchRange 函数中:
int start = lower(nums, target);:调用 lower 函数找到 target 的起始位置。
if (start == nums.size() || nums[start]!= target) {... }:检查 target 是否存在。
int end = lower(nums, target + 1) - 1;:找到 target + 1 的起始位置并减 1 得到 target 的结束位置。

标签:二分,灵神,target,nums,int,mid,start,查找,left
From: https://www.cnblogs.com/zsh260439/p/18601161

相关文章

  • 二分查找第一个出现target的位置(不断左偏移)
    includeincludeusingnamespacestd;intbinarySearchFirstOccurrence(vector&nums,inttarget){intleft=0;intright=nums.size()-1;intresult=-1;while(left<=right){intmid=left+(right-left)/2;if(nums[mid]==target){r......
  • 【数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
    目录......
  • 【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
    目录......
  • 【优先算法】不知OJ谁裁出,二分查找似剪刀 - 二分查找算法
    本篇博客给大家带来的是二分查找的知识点,通过相关的OJ题进一步理解二分查找的应用与本质.......
  • Python-多种机器学习算法-二分类—多指标展示-雷达图-热图-柱状图
    旨在利用多种机器学习算法实现对乳腺癌的诊断。并使用准确率、精确率、召回率、F1—score和ROC-AUC等指标进行评价。并使用雷达图、柱状图等进行展示。 废话不多说先上结果图: 本人代码是使用notebook编写的,这里直接放上总代码!!!importpandasaspdimportnumpyasnpimp......
  • 遥感与气象数据集的查找与常见数据格式的解释
    数据集的获取遥感数据和气象数据是各种环境和气候研究课题中常用的数据类型,通常会从不同的官方网站和数据平台获取。以下是一些遥感和气象数据课题组常用的数据来源和相关的卫星产品:1.气象数据:ERA5(气象数据)来源:CopernicusClimateChangeService(C3S)类型:ERA5......
  • 整体二分
    简介整体二分是一种离线算法,适用于符合以下特征的DS题。询问具有可二分性。修改之间互不影响。修改无关答案判定标准。(注意是判定标准而不是判定过程)贡献满足交换律,结合律,可加性。(即答案与操作先后顺序无关,且可加)允许离线。(废话这是离线算法不允许离线还玩毛线啊)总体来......
  • C#联合halcon实现直线查找
    一、前言C#之Winform+Halcon实现图像直线查找功能1、创建计量模型HMetrologyModel2、添加计量对象到线测量3、设置计量对象参数4、设置查找参数:边缘阈值、边缘选择、过度方式5、显示测量点二、运行结果三、代码 doubler1=50.00,c1=300.0; doubler2=150.0......
  • 【查找】线性表的查找
        目录1.顺序查找利用顺序表的实现顺序查找设置监视哨的顺序查找 利用链表实现顺序查找顺序查找的优缺点2.折半查找(二分查找)折半查找的优缺点3.分块查找分块查找的优缺点1.顺序查找时间复杂度:O(n)存储结构:顺序查找可适用于线性表的顺序存储和链式......
  • 二分查找(带图详解)
    优选算法系列文章目录优选算法系列前言一、二分查找的思想二、算法使用小总结三、代码实现四、二分查找拓展4.1、查找第一次出现的target小总结4.2、target最后出现的位置小总结五、代码总结前言在这篇博客中,我会给大家分享二分查找及其扩展。这是链接->Leet......