#include <iostream>
#include <vector>

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @param target int整型
     * @return int整型
     */
    int search(vector<int>& nums, int target) {
        // write code here
        if (nums.size() < 1){
            return -1;
        }
        return binarySearch(nums, 0, nums.size(), target);
    }

    int binarySearch(vector<int>& nums, int start_pivot, int end_pivot, int target) {
        if (start_pivot == nums.size()){
            return -1;
        }
        if (start_pivot == end_pivot){
            if (nums[start_pivot] == target){
                return start_pivot;
            }else{
                return -1;
            }
        }

        int mid = (end_pivot-start_pivot) / 2;
        mid += start_pivot; 
        if (target == nums[mid]){
            return mid;
        }
        if (target < nums[mid]) {
            return binarySearch(nums, start_pivot, mid, target);
        }
        return binarySearch(nums, mid+1, end_pivot, target);
    }
};