1. 程式人生 > >Leetcode33. 搜尋旋轉排序陣列

Leetcode33. 搜尋旋轉排序陣列

題目大意:返回旋轉排序陣列中的值等於目標值的元素的索引

題目分析:使用二分法查詢。根據旋轉陣列的性質,將這個陣列從中間切開,前後兩個子陣列必定有一個是按照升序排列的,我們在升序的子陣列中判斷是否存在等於目標值的元素,若沒有,則在另一個部分查詢。

程式碼展示:

class Solution(object):
    def search(self, nums, target):
        left = 0
        right = len(nums)-1
        while left<=right:
            mid = (left+right)/2
            if nums[mid]==target:
                return mid
            if nums[left]<=nums[mid]:
                if nums[left]<=target and target<nums[mid]:
                    right = mid-1
                else:
                    left = mid+1
            if nums[mid]<=nums[right]:
                if nums[mid]<target and target<=nums[right]:
                    left = mid+1
                else:
                    right = mid-1
        return -1