题解 | #在旋转过的有序数组中寻找目标值#

在旋转过的有序数组中寻找目标值

https://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995

二分法,每次二分查找有两个判断:1.判断target和nums[mid]的大小关系;2.判断mid落在左边还是右边递增区间。
class Solution:
    def search(self , nums: List[int], target: int) -> int:
        # write code here
        left, right = 0, len(nums) - 1
        while left <= right:
            mid = (left + right) // 2
            if(nums[mid] == target):
                return mid;
            elif(target < nums[mid]):
                if(nums[mid] >= nums[left] and nums[left] <= target or nums[mid] < nums[left]):
                    right = mid - 1
                else:
                    left = mid + 1
            else:
                if(nums[mid] <= nums[right] and nums[right] >= target or nums[mid] > nums[left]):
                    left = mid + 1
                else:
                    right = mid - 1
        return -1


全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务