一. 题目

二. 思路

三. 代码

class Solution
{
    int tfind(int[] a, int l, int r, int x)
    {
        while (l < r)
        {
            int mid = (l + r) / 2;
            if (a[l] <= a[mid])//左边有序
            {
                if (x >= a[l] && x <= a[mid]) r = mid;//是否在有序范围
                else l = mid + 1;
            } else//右边有序
            {
                if (x >= a[mid + 1] && x <= a[r]) l = mid + 1;//是否在有序范围
                else r = mid;
            }
        }

        if (a[l] == x) return l;
        return -1;
    }

    public int search(int[] nums, int target)
    {
        return tfind(nums, 0, nums.length - 1, target);
    }
}