0
点赞
收藏
分享

微信扫一扫

LeetCode: #33搜索旋转排列数组

MaxWen 2022-02-07 阅读 58

Code:

class Solution {
    public int search(int[] nums, int target) {

        int l = 0;
        int r = nums.length -1;
        int mid;

        while (l + 1 < r) {
            mid = l + (r - l) / 2;
            if (nums[mid] == target) {
                return mid;
            }
            if (nums[mid] > nums[l]) {
                //上半段 是递增的
                if ((target >= nums[l]) && (target <= nums[mid])) {
                    //说明再前半段
                    r = mid;
                } else {
                    //再后半段
                    l = mid;
                }
            } else {
                //下半段
                 if ((target <= nums[r]) && (target >= nums[mid])) {
                    l = mid;
                } else {
                    r = mid;
                }
            }
        }
        //判断下边界
        if (nums[l] == target) {
            return l;
        }
        if (nums[r] == target) {
            return r;
        }
        return -1;
    } 
    
}

 

举报

相关推荐

0 条评论