Search in Rotated Sorted Array LeetCode(java实现)
[问题描述]
(https://leetcode.com/problems/search-in-rotated-sorted-array/)
解题方法

例如{0,1,2,3,4,5,6,7}这个有序数组旋转以后,会有如上图所示七种情况,我们可以观察出,当数组中间值小于最末尾值时,说明数组后半段递增有序,反之,则是前半段,当我们判断完目标target值出现在数组哪部分时,继续使用二分搜索法进行搜索。
class Solution {
public int search(int[] nums, int target) {
int start = 0,end = nums.length-1;
while(start <= end){
int mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}
if(nums[mid] < nums[end]){
if(nums[mid] < target && target <= nums[end])
start = mid +1;
else
end = mid -1;
}
else{
if(target >= nums[start] && target <nums[mid])
end = mid -1;
else
start = mid +1;
}
}
return -1;
}
}
本文介绍了解决LeetCode中Search in Rotated Sorted Array问题的Java实现方法。通过观察旋转后的数组特性,采用二分搜索法高效查找目标值。文章详细解析了代码逻辑,包括如何判断目标值位于数组的哪一部分,并在确定的部分继续进行搜索。
443

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



