美文网首页
LeetCode No.3 搜索旋转排序数组

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

作者: MRYDM | 来源:发表于2019-05-15 17:08 被阅读0次

    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;
    
        }
    
    提交结果

    相关文章

      网友评论

          本文标题:LeetCode No.3 搜索旋转排序数组

          本文链接:https://www.haomeiwen.com/subject/ztxmaqtx.html