1. LeetCode33题目链接链接
https://leetcode.com/problems/search-in-rotated-sorted-array/
2. 结题思路
看到这个题目不太理解,所以就看了下题解,才明白是一个排序数组,但是有一部分被旋转过,然后判断目标target是否在这段区域内。但是还有一个问题,要求时间复杂度O(log n),一脸懵逼,然后去查了下。。还好,很明确说了二分查找法。时间复杂度具体可以看下这个。
https://blog.csdn.net/li396864285/article/details/79820808
public int checkTarget(int[] nums, int target) {
if (nums.length == 0) {
return -1;
}
int left = 0;
int right = nums.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] > nums[right]) {
left = mid + 1;
} else {
right = mid;
}
}
int last_left = left;
left = 0;
right = nums.length - 1;
if (nums[last_left] <= target && target <= nums[right]) {
left = last_left;
} else {
right = last_left;
}
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
提交结果
网友评论