题目来源:
https://leetcode.com/problems/search-in-rotated-sorted-array/
题意分析:
在一个翻转数组实现一个查找。(什么叫翻转数组,也就是,原来排好序的数组,选择一个点,将这个点之前的数放到数组的后面,不如4,5,6,7,1,2,3就是一个翻转数组)。
题目思路:
这道题目的思路和二分查找的思路相似,难度主要是在确定二分的位置。
代码(python):
1 class Solution(object): 2 def search(self, nums, target): 3 """ 4 :type nums: List[int] 5 :type target: int 6 :rtype: int 7 """ 8 size = len(nums) 9 first = 0;last = size 10 while first != last: 11 mid = (first + last) // 2 12 if nums[mid] == target: 13 return mid 14 if nums[first] <= nums[mid]: 15 if nums[first] <= target and target < nums[mid]: 16 last = mid 17 else: 18 first = mid + 1 19 else: 20 if nums[mid] < target and target <= nums[last - 1]: 21 first = mid + 1 22 else: 23 last = mid 24 return -1
转载请注明出处:http://www.cnblogs.com/chruny/p/4918379.html
时间: 2024-11-15 02:24:31