zoukankan      html  css  js  c++  java
  • 在排序数组中查找元素的第一个和最后一个位置(C++实现)

    class Solution {
    public:
    vector<int>v1 = {-1,-1};
    vector<int> searchRange(vector<int>& nums, int target) {

    if(nums.size()==0)
    {
    return v1;
    }

    v1[0] = findfirstPosition(nums,target);

    if(v1[0]==-1)
    {
    return v1;
    }
    v1[1] = findlastPosition(nums,target);
    return v1;
    }

    private:
    int findfirstPosition(vector<int>nums,int target)
    {

    int left = 0 ;
    int right = nums.size()-1;
    while(left<=right)
    {
    int mid = left + (right-left)/2;

    if(nums[mid]==target)
    {
    right = mid - 1;
    }

    else if(nums[mid]<target)
    {
    left = mid + 1;
    }

    else{
    right = mid - 1;
    }
    }

    if(left!=nums.size()&&nums[left]==target)
    {
    return left;
    }
    return -1;
    }

    int findlastPosition(vector<int>nums,int target)
    {
    int left = 0 ;
    int right = nums.size()-1;
    while(left<=right)
    {
    int mid = left + (right-left)/2;

    if(nums[mid]==target)
    {
    left = mid + 1;
    }

    else if(nums[mid]<target)
    {
    left = mid + 1;
    }

    else{
    right = mid - 1 ;
    }
    }

    return right;
    }
    };

  • 相关阅读:
    C语言I博客作业04
    C语言I博客作业03
    C语言1博客作业02
    作业1
    C语言||作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    笔记本
  • 原文地址:https://www.cnblogs.com/shiheyuanfang/p/13921663.html
Copyright © 2011-2022 走看看