LeetCode-python 81.搜索旋转排序数组 II

题目链接
难度:中等       类型:数组、二分搜索


假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。

编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。

示例1

输入: nums = [2,5,6,0,0,1,2], target = 0
输出: true

示例2

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

解题思路


二分搜索:
若nums[left]==nums[right]==nums[mid],是无法二分的,只能遍历
否则就可以二分,移动有指针的情况有:
nums[mid]>target>nums[left] or nums[mid] 其余情况移动左指针

代码实现

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: bool
        """
        if not nums:
            return False
        left, right = 0, len(nums)-1
        
        while lefttarget>nums[left] or nums[mid]

本文链接:https://www.jianshu.com/p/c0c70702b767

你可能感兴趣的:(LeetCode-python 81.搜索旋转排序数组 II)