二分搜索-搜索旋转排序数组
题目
思路
此题是很明显的二分法求确切值,思考方法跟求边界值略有不同
- 首先可以确定循环条件为$[left,right]$,因为既然是求明确值,那么肯定是$left$和$right$的闭区间($left$和$right$的值也被包含进去)
- 然后再确定左右边界的移动方式
- 假定当前$mid$不符合($left$右移),此时可能符合条件的区间应$[mid+1, right]$(需要将$mid$排除在外,因为$mid$已经不符合了)
- 同理当$mid$不符合($right$左移)也是一样,此时符合区间应为$[left,mid-1]$
再回归到此题,此题的不同之处是,将原本有序的序列进行了旋转,变为了两个有序的序列,乍看起来不太好做,实际上一分析,做法还是相同,只要根据条件判断每一次$left$右移和$right$左移的条件就行了。
代码
1 | class Solution: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gua!
评论