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

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;

    }
提交结果
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容