Wyszukaj w obrotowej sortowanej tablicy leetcode

class Solution {
    public int search(int[] nums, int target) {
        int pivot = FindPivot(nums);
        int a_pointer = 0;
        int b_pointer = nums.length-1;
        if (target >= nums[pivot] && target <= nums[b_pointer] ){
            a_pointer = pivot;
        }else{
            b_pointer = pivot;
        }
        if (nums[a_pointer] == target) return a_pointer;
        if (nums[b_pointer] == target) return b_pointer;
        while(a_pointer <= b_pointer){
            int midpoint = a_pointer + (b_pointer - a_pointer) / 2;
            if (nums[midpoint] == target) return midpoint;
            if (nums[midpoint] < target) a_pointer = midpoint + 1;
            if (nums[midpoint] > target) b_pointer = midpoint - 1;
        }
        return -1;
    }
    
    public static int FindPivot(int[] nums){

        int start = 0;
        int end = nums.length-1;

        while (start < end){
            int mid = start + (end-start)/2;
            if (nums[mid] > nums[end]){
                start = mid+1;
            }else end = mid;
        }
        return start;
    }
}
Prabhu Kiran Konda