python -- leetcode ---- 81.Search in Rotated Sorted Array II
阿新 • • 發佈:2018-12-17
-81.Search in Rotated Sorted Array II
給定一個list,是由一個有序陣列在某一樞紐處旋轉得到的,並且其中可能含有重複元素,要求判斷target是否在這個list中.
雖然這個list經過旋轉,但是還是可以用二分查詢的思想,因為mid的左邊或右邊一定有一端是有序的.因此只需要在二分查詢的時候對此進行判斷就行了.另外本題可能有重複值,所以當left,mid和right指向的值都相等時要移動指標來跳出迴圈.
class Solution: def search(self, nums, target): """ :type nums: List[int] :type target: int :rtype: bool """ left = 0 right = len(nums)-1 while left <= right: mid = int((left + right) / 2) if nums[mid] == target: return True if nums[mid] < nums[right] or nums[mid] < nums[left]: if nums[mid] < target <= nums[right]: left = mid + 1 else: right = mid - 1 elif nums[mid] > nums[left] or nums[mid] > nums[right]: if nums[mid] > target >= nums[left]: right = mid - 1 else: left = mid + 1 else: left += 1 return False