# python3
class Solution:
    def search(self , nums: List[int], target: int) -> int:
        # 二分 始终和最右边对比,正常情况下右边最大
        left, right = 0, len(nums)-1
        while left <= right:
            mid = (left+right)//2
            if nums[mid] == target:
                return mid 
            elif nums[mid] >= nums[right]:  # 左边递增,右边单调性不确定
                if nums[right] >= target:  # 说明目标值在右边区间
                    left = mid + 1
                else:
                    right = mid - 1
            else:  # 左边区间不确定单调性 右边区间递增
                if target > nums[mid] and target <= nums[right]:  # 在右边
                    left = mid + 1
                else:
                    right = mid -1
        return -1