当前位置: 代码迷 >> 综合 >> LeetCode 33 Search in Rotated Sorted Array
  详细解决方案

LeetCode 33 Search in Rotated Sorted Array

热度:41   发布时间:2023-10-28 04:43:58.0

思路

以mid为分界线,左右两边必有一侧为递增的。
根据begin,mid,end的大小规律,每次搜寻的时候避开乱序部分。
附上YouTube讲解https://www.youtube.com/watch?v=KSZfO65J6hg

复杂度

时间复杂度O(log n),空间复杂度O(1)

代码

参考九章的二分模板

class Solution {
    public int search(int[] nums, int target) {
    if(nums.length == 0)return -1;int start = 0, end = nums.length-1;while(start + 1 < end) {
    int mid = start + (end-start)/2;if(nums[mid] == target)return mid;if(nums[mid] > nums[start]) {
    if(nums[start] <= target && target <= nums[mid]) {
    end = mid;} else {
    start = mid;}} else {
    if(nums[mid] <= target && target <= nums[end]) {
    start = mid;} else {
    end = mid;}}}if(nums[start] == target) {
    return start;} else if(nums[end] == target) {
    return end;}return -1;}
}
  相关解决方案