33.搜索旋转排序数组

2021年09月15日 阅读数:3
这篇文章主要向大家介绍33.搜索旋转排序数组,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

33. 搜索旋转排序数组 - 力扣(LeetCode) (leetcode-cn.com)数组

 

class Solution {
public:
    int search(vector<int>& nums, int target) {
         int left = 0, right = nums.size()-1;
        while(left <= right){
            int mid = (left+right)/2;
            if(nums[mid] == target) return mid;

            if(nums[mid] >= nums[left]){ //说明前半段有序
                if(target >= nums[left] && target < nums[mid]){ 
                    right = mid-1; //说明target在前半段
                }else{
                    left = mid+1; //说明在后半段
                }
            }else if(nums[mid] < nums[left]){ //说明在后半段
                if(target > nums[mid] && target <= nums[right]){
                    left = mid+1;  //说明在后半段
                }else{
                    right = mid-1; //说明在后半段
                }
            }


        }
        return -1;
    }
};

 

下一篇: 基础篇