33. 搜索旋转排序数组 - 力扣(LeetCode)
java">class Solution {public int search(int[] nums, int target) {int n=nums.length;if(n==0){return -1;}int left=0,right=n-1;while(left<=right){int mid=(left+right)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){if(nums[left]>nums[right]&&nums[left]<=target&&nums[mid]<=nums[right]){right=mid-1;}else{left=mid+1;}}else{if(nums[left]>nums[right]&&nums[right]>=target&&nums[mid]>=nums[left]){left=mid+1;}else{right=mid-1;}}}return -1;}
}
python">class Solution:def search(self, nums, target):n = len(nums)if n == 0:return -1left, right = 0, n - 1while left <= right:mid = (left + right) // 2if nums[mid] == target:return midelif nums[mid] < target:if nums[left] > nums[right] and nums[left] <= target and nums[mid] <= nums[right]:right = mid - 1else:left = mid + 1else:if nums[left] > nums[right] and nums[right] >= target and nums[mid] >= nums[left]:left = mid + 1else:right = mid - 1return -1