首页 > 其他 > 详细

leetcode81

时间:2019-12-10 18:59:26      阅读:96      评论:0      收藏:0      [点我收藏+]
 1 class Solution:
 2     def search(self, nums: List[int], target: int) -> bool:
 3         n = len(nums)
 4         if n == 0:
 5             return False
 6         if n == 1:
 7             return target == nums[0]
 8         l,h = 0,n-1
 9         while l <= h:
10             mid = l + (h - l) // 2
11             if nums[l] == target or nums[mid] == target or nums[h] == target:
12                 return True
13             if nums[l] < nums[mid]:#左侧有序,以l为起点,以mid为终点
14                 if nums[l] < target and target < nums[mid]:
15                     h = mid - 1
16                 else:
17                     l = mid + 1
18             elif nums[l] > nums[mid]:#右侧有序,以mid为起点,以h为终点
19                 if nums[mid] < target and target < nums[h]:
20                     l = mid + 1
21                 else:
22                     h = mid - 1
23             else:#无法判断顺序,可以让h-1,也可以让l+1
24                 h -= 1
25         return False

 

leetcode81

原文:https://www.cnblogs.com/asenyang/p/12018256.html

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