LeetCode No.3 搜索旋转排序数组

2019-05-15  本文已影响0人  MRYDM

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;

    }
提交结果
上一篇下一篇

猜你喜欢

热点阅读