首页 > 其他分享 >力扣 34. 在排序数组中查找元素的第一个和最后一个位置

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

时间:2024-02-02 20:31:34浏览次数:32  
标签:下标 target nums int res 34 力扣 查找 ans

Problem: 34. 在排序数组中查找元素的第一个和最后一个位置

思路

找到大于等于target的下标,然后遍历之后的数组,找到最后的下标。

class Solution {
public:
    int f(vector<int>& nums, int target){
        int l=0,r=nums.size()-1;
        int mid=floor(l+(r-l)*1.0/2);
        while(l<=r){//这里需要小于等于
            if(nums[mid]<target)l=mid+1;
            else r=mid-1;
            mid=floor(l+(r-l)*1.0/2);
        }
        return l;
    }
    vector<int> searchRange(vector<int>& nums, int target) {
        int ans=f(nums,target),n=nums.size(),res=ans;//res是最后的下标,当只有一个时,res=ans

        if(ans>=n || nums[ans]!=target)return {-1,-1};
        for(int i=ans+1;i<nums.size();i++){
            if(nums[i]==target)res=i;
            else break;
        }
        
        nums.clear();
        nums.push_back(ans);
        nums.push_back(res);
        return nums;
    }
};

标签:下标,target,nums,int,res,34,力扣,查找,ans
From: https://blog.51cto.com/u_15974747/9562009

相关文章

  • 二分查找!
    使用范围:查找元素:在有序数组中查找一个特定的元素。找到边界:查找有序数组中某个值的第一个或最后一个出现的位置。搜索旋转排序数组:在旋转排序数组中查找一个特定的元素。查找峰值元素:在数组中查找峰值元素。求平方根:计算一个非负整数的平方根。搜索区间:......
  • 34
    题目背景设定在一个具有物理意义的情境中,以便于理解和解答。背景:考虑一个三维空间中的温度场(T(x,y,z)),其分布由下式给出:[T(x,y,z)=e{-(x2+y^2+z^2)}]我们将探索该温度场在一定区域内的性质,包括温度梯度、流量、平均温度等。小问一:温度梯度计算温度场(T(x,y......
  • 在排序数组中查找元素的第一个和最后一个位置
    34FindFirstandLastPositionofElementinSortedArray问题描述:给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn)级别。如果数组中不存在目标值,返回[-1,-1]。示例1:输入:n......
  • 【C++】力扣101-分配问题和区间问题
    1.有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃一个饼干,且只有饼干的大小不小于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intcalc......
  • List<ParamItem> lists,里如何查找里面id=3行,所在的value
    如果你有一个名为lists的List<ParamItem>,并且想要查找其中id为3的行,并获取对应的value值,可以使用Java8引入的StreamAPI来实现。下面是一个示例代码:importjava.util.List;importjava.util.Optional;publicclassMain{publicstaticvoidmain(String[......
  • 二分查找
    704.二分查找(Easy)问题描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:输......
  • ABC334G Christmas Color Grid 2
    第一次AKabc,写篇题解记录一下。原题传送门分析发现实际上是要求删去每个绿点之后会多出几个连通块。发现这跟割点的定义很像,于是考虑建图,在相邻的绿点之间连边。然后就只要知道每个点到底被包含在几个点双里。我们使用圆方树,此时就只需要统计每个点的度数就可以了。代码#in......
  • ABC334F Christmas Present
    非常好dp,使我线段树旋转。原题传送门分析首先由于两点之间直线线段最短,我们肯定是希望从头一直送到尾,最后回家。但是有了\(k\)的限制,就麻烦了。考虑一个dp。我们设\(dp[i]\)表示刚送完第\(i\)个孩子时所要跑的最短距离。转移的时候我们枚举上一次回家是在送完哪一个孩......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • 查找目录中所有内容文本中不含某个特定字符串的文件列表
    查找目录中所有内容中不含某个特定字符串的文件的列表find/your/search/dir-typef!-execgrep-q"PatternString"{}\;-print-typef表示只查找文件;!表示对匹配条件进行取反,即不含特定字符串;{}\; 将每个被找到的文件作为参数传递给find后面的grep命令,其中:花......