[Med Bi-Div] 33. Search in Rotated Sorted Array

Description

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).

Solution

二分法,分情況處理
(類似題目:找min)

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        if len(nums)==0:
            return -1
        start = 0
        end = len(nums)-1
        
        while start+1<end:
            mid = (start+end)//2
            if nums[mid]>nums[start]:
                if target >= nums[start] and target <=nums[mid]: 
                    end = mid
                else:
                    start = mid
            else:
                if target <= nums[end] and target >=nums[mid]: 
                    start = mid 
                else:
                    end = mid
        if target == nums[start]:
            return start
        if target == nums[end]:
            return end
        
        return -1     
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,436評(píng)論 0 10
  • 1# Leetcode 367. Valid Perfect Square Given a positive in...
    愛吃蝦的雅典娜閱讀 382評(píng)論 0 1
  • Suppose an array sorted in ascending order is rotated at ...
    Kevifunau閱讀 211評(píng)論 0 0
  • 致我親愛的李小姐: 今天是我的生日,同時(shí)也是我們分手一周年。怎么說呢,不痛不癢無關(guān)風(fēng)月,只是酒后提到你偶爾還會(huì)...
    奈久閱讀 264評(píng)論 0 0
  • 世間美人萬萬千,唯獨(dú)你住入心間。與H先生相識(shí)于新生群,他很能說也挺逗,一來二去倒也熟悉不少,所以當(dāng)某一天他發(fā)起視...
    愚悅星火閱讀 216評(píng)論 0 1