[LeetCode] 33. Search in Rotated Sorted Array_Medium tag: Binary Search

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 33. Search in Rotated Sorted Array_Medium tag: Binary Search相关的知识,希望对你有一定的参考价值。

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

Your algorithm\'s runtime complexity must be in the order of O(log n).

Example 1:

Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4

Example 2:

Input: nums = [4,5,6,7,0,1,2], target = 3
Output: -1

1) 这个题目思路就是先画图, 分区间讨论,注意是左移还是右移,最好画图判断下。

2)可以利用[LeetCode] 153. Find Minimum in Rotated Sorted Array_Medium tag: Binary Search 的思路,通过lg n 找到转折点,然后分别在两段里面找。

T: O(lgn)

Code

1)

class Solution:
    def search(self, nums, target):
        if not nums: return -1
        S, E, l, r = nums[0], nums[-1], 0, len(nums) - 1
        while l + 1 < r:
            mid = l + (r - l)//2
            if target == nums[mid]: return mid
            if nums[mid] >= S:
                if S <= target <= nums[mid]:
                    r = mid
                else:
                    l = mid
            else:
                if nums[mid] <= target <= E:
                    l = mid
                else:
                    r = mid
        if nums[l] == target: return l
        if nums[r] == target: return r
        return -1

 

以上是关于[LeetCode] 33. Search in Rotated Sorted Array_Medium tag: Binary Search的主要内容,如果未能解决你的问题,请参考以下文章

#Leetcode# 33. Search in Rotated Sorted Array

leetcode33. Search in rotated sorted array

一天一道LeetCode#33. Search in Rotated Sorted Array

leetcode 33. Search in Rotated Sorted Array

Leetcode33. Search in Rotated Sorted Array

LeetCode题意分析&解答33. Search in Rotated Sorted Array