题目意思就是 :从数组前面截取一部分,然后放到后面去,强行将一个有序的数组变成两段有序的数组,然后查找一个值是否在数组里
class Solution {
public boolean search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while(left <= right){
//处理重复数字
while(left < right && nums[left] == nums[left + 1]) ++left;
while(left < right && nums[right] == nums[right - 1]) --right;
int mid = left +(right - left)/2;
if(nums[mid] == target) return true;
//左半部分有序
if(nums[mid] >= nums[left]){
if(target < nums[mid] && target >= nums[left]) right = mid - 1;
else left = mid + 1;
}else{
//右半部分有序
if(target > nums[mid] && target <= nums[right]) left = mid + 1;
else right = mid - 1;
}
}
return false;
}
}
本文介绍了一种在旋转数组中查找特定元素的搜索算法实现。该算法通过调整二分搜索策略来适应旋转数组的特点,有效地解决了在经过旋转操作后的有序数组中进行搜索的问题。

被折叠的 条评论
为什么被折叠?



