zoukankan      html  css  js  c++  java
  • LeetCode 34

    给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

    你的算法时间复杂度必须是 O(log n) 级别。

    如果数组中不存在目标值,返回 [-1, -1]

    示例 1:

    输入: nums = [5,7,7,8,8,10], target = 8

    输出: [3,4]

    示例 2:

    输入: nums = [5,7,7,8,8,10], target = 6

    输出: [-1,-1]

    显然,这题就是考察lower_bound和upper_bound的,我们可以直接用C++提供的函数,也可以自己写。

    AC代码:

    class Solution
    {
    public:
        vector<int> searchRange(vector<int>& nums, int target)
        {
            vector<int> res;
            int l=lower_bound(nums.begin(),nums.end(),target)-nums.begin();
            int r=upper_bound(nums.begin(),nums.end(),target)-nums.begin()-1;
            if(l<=r && 0<=l && r<nums.size())
            {
                res.push_back(l), res.push_back(r);
                return res;
            }
            else
            {
                res.push_back(-1), res.push_back(-1);
                return res;
            }
        }
    };
    int lower(const vector<int> &a,int x)
    {
        int l=0, r=a.size();
        while(l<r)
        {
            int mid=(l+r)/2;
            if(a[mid]<x) l=mid+1;
            else r=mid;
        }
        return l;
    }
    int upper(const vector<int> &a,int x)
    {
        int l=0, r=a.size();
        while(l<r)
        {
            int mid=(l+r)/2;
            if(a[mid]<=x) l=mid+1;
            else r=mid;
        }
        return l;
    }
    
    class Solution
    {
    public:
        vector<int> searchRange(vector<int>& nums, int target)
        {
            vector<int> res;
            int l=lower(nums,target);
            int r=upper(nums,target)-1;
            if(l<=r && 0<=l && r<nums.size())
            {
                res.push_back(l), res.push_back(r);
                return res;
            }
            else
            {
                res.push_back(-1), res.push_back(-1);
                return res;
            }
        }
    };
  • 相关阅读:
    idea--不能启动问题
    linux--mysql5.7安装
    vmware
    debezium
    java枚举
    springfox
    日志级别
    lombok--知识点
    es6--箭头函数
    网址访问过慢
  • 原文地址:https://www.cnblogs.com/dilthey/p/10766245.html
Copyright © 2011-2022 走看看