二分搜索
二分搜索
2024年7月25日
21:27
- 正常二分思想
- 重点是遇到不同的数怎么定边界,怎么记录答案。
- 特殊情况:没有数字或者只有一个数,直接判断返回
- 先定一个ans=-1用于记录答案,l、r记录左右边界
- 看中点数值,比target小,说明比target的的数字在右边,l = mid+1
- 比target大,ans=mid,还需要看看左边是不是有比这个mid还小但是符合》=num的,r = mid-1
- 不断重复,直到没有数为止。
- 和2思路相同
- 寻找任意一个峰值------》可以得出一个经验,某侧必有,那么用二分。
- -1和N默认为极小数,看0位置和n-1位置是不是峰值,是就返回
- 如果都不是,那么在左侧,从0到1是上升的,从N-2到N-1是下降的,则在中间必有解,取中点继续检查,l=0,r = N-2
- mid = l+(r-l)/2,
- 如果mid是峰值,就返回mid,
- 如果mid-1到mid上升,那么右侧必有,l=mid+1
- 如果mid到mid+1下降,那么左侧必有,r =mid-1
例题:https://leetcode.cn/problems/find-peak-element/