binSerach

#include <iostream>
#include <vector>
#include <string>
using namespace  std;

int binSerach(const std::vector<int>& nums, int target)
{
    int low = 0;
    int high = nums.size() - 1;
    int mid;

    while (low <= high)
    {
        mid = (low + high)/2;
        if(nums[mid] == target)
        {
            while(mid != 0 and nums[mid-1] == nums[mid])
            {
                mid--;
            }
            return mid;
        }
        else if(nums[mid] > target)
        {
            high = mid - 1; 
        }
        else
        {
            low = mid + 1;
        }
    }

    return -1;
}


int main()
{
    vector<int> vec = {1,2,2,3,4};

    cout <<binSerach(vec,2)<<endl;
    getchar();
    return 0;
}
View Code
posted @ 2021-10-26 09:24  Kiris  阅读(15)  评论(0编辑  收藏  举报