首页 > 其他 > 详细

033 Search in Rotated Sorted Array

时间:2015-07-08 14:28:43      阅读:266      评论:0      收藏:0      [点我收藏+]

这道题比较a[start] 和 a[half]的值就可以判断 该序列的头在左半部分 还是右半部分,这样就可以利用二分查找了

class Solution:
    # @param A, a list of integers
    # @param target, an integer to be searched
    # @return an integer
    def search(self, A, target):
        if len(A) == 0:
            return -1
        return self.solve(A, target, 0, len(A)- 1)

    def solve(self, a, target, start, end):
        if start > end:
            return -1
        half = int((end-start)/2) + start
        if a[start] == target:
            return start
        if a[end] == target:
            return end
        if a[half] == target:
            return half
        if a[start] < a[half]:
            if target > a[half] or target < a[start]:
                return self.solve(a, target, half+1, end-1)
            else:
                return self.solve(a, target, start+1, half-1)
        else:
            if target < a[half] or target > a[start]:
                return self.solve(a, target, start+1, half-1)
            else:
                return self.solve(a, target, half+1, end-1)

 

033 Search in Rotated Sorted Array

原文:http://www.cnblogs.com/dapanshe/p/4629814.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!