【leetcode19】

  1. class Solution:
  2.     def search(self, nums: List[int], target: int) -> int:
  3.         l=0
  4.         r=len(nums)-1     #1
  5.         while l<=r:           #2
  6.             mid=int((l+r)/2)
  7.             if nums[mid]>target:
  8.                 r=mid-1       #3
  9.             elif nums[mid]<target:
  10.                 l=mid+1
  11.             else:
  12.                 return mid
  13.         return -1
       非常基础的二分,但是解决了一直以来的边界处理问题:
根据统一的左右区间的开闭来判断边界,上述代码为左闭右闭,下面为左闭右开
  1. class Solution:
  2.     def search(self, nums: List[int], target: int) -> int:
  3.         l=0
  4.         r=len(nums)
  5.         while l<r:
  6.             mid=int((l+r)/2)
  7.             if nums[mid]>target:
  8.                 r=mid
  9.             elif nums[mid]<target:
  10.                 l=mid+1
  11.             else:
  12.                 return mid
  13.         return -1

发表评论