首页 > 其他 > 详细

Search in Rotated Sorted Array

时间:2019-04-17 16:02:26      阅读:120      评论:0      收藏:0      [点我收藏+]

问题:给定一个有序的数组和一个目标值,将数组分为两部分并且交换顺序后,从数组中找到目标值的位置,如果目标值不在数组中,则输出-1

示例:

  输入:nums = [3,4,5,6,0,1,2] target=5

  输出:2

  输入:nums = [4,6,7,1,2,3] target=0

  输出:-1

解决思路:类似于二分查找,但条件判断要更复杂一些

Python代码:

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        left = 0
        right = len(nums) - 1
        while left <= right:
            mid = (left+right) // 2
            if nums[mid] < target:
                if nums[right] < nums[mid] or nums[right] >= target:
                    left = mid+1
                else:
                    right = mid - 1
            elif nums[mid] > target:
                if nums[left] > nums[mid] or nums[left] <= target:
                    right = mid - 1
                else:
                    left = mid + 1
            else:
                return mid
        return -1 

 

Search in Rotated Sorted Array

原文:https://www.cnblogs.com/wenqinchao/p/10724044.html

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