Ling-Algorithm-二分查找
34. 在排序数组中查找元素的第一个和最后一个位置
最优解法
时间复杂度 O(logn),空间复杂度 O(1)
答案所在范围使用左闭右开区间
[left,right)(取不到right,所以是开区间),为了使区间不为空,循环条件应为left<right。
- 如果
nums[mid]>=target,令right=mid[left,mid),可得nums[right]>=target(循环不变量一),- 如果
nums[mid]<target,令left=mid+1[mid+1,right),可得nums[left-1]<target(循环不变量二)。当
left=right时结束循环,此时nums[left]>=target且nums[left-1]<target,所以left和right同时指向答案。
1 | /** |
- Title: Ling-Algorithm-二分查找
- Author: Gabrielle
- Created at : 2026-02-11 21:57:16
- Updated at : 2026-05-12 00:12:41
- Link: https://zoella-w.github.io/2026/02/11/98-Ling-Algorithm-二分查找/
- License: This work is licensed under CC BY-NC-SA 4.0.