Leetcode每日一题2021/01/12➕1

Leetcode每日一题2021/01/12➕1_第1张图片

  • 遇到的问题:
    Leetcode每日一题2021/01/12➕1_第2张图片
class Solution:
    def search(self, nums: List[int], target: int) -> bool:
        n = len(nums)
        left, right = 0, n-1
        while(left <= right):
            mid = left + (right - left)//2
            if(nums[mid] == target):
                return True
            if(nums[left] == nums[mid]):
                left += 1
                continue
            if(nums[right] == nums[mid]):
                right -= 1
                continue
            if(nums[mid] < nums[right]):
                if(nums[mid] < target and target <= nums[right]):
                    left = mid + 1
                else:
                    right = mid - 1
            else:
                if(nums[left] <= target and target < nums[mid]):
                    right = mid - 1
                else:
                    left = mid + 1
        return False

3

  • 个人分析,其实这里是会影响到时间复杂度的,二分法的特点是每次丢掉一半,二分法的时间复杂度是O(log n)。
    这里left+=1和right-=1,这里就影响了,最坏的可能是O(n)。

你可能感兴趣的:(Leetcode,二分法,leetcode,算法,数据结构)