Sword 11
https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/
直接搜索是 O(n), 所以我们用二分来求解
首先考虑一下为什么能二分,二分的原理就是每次根据中间的值都可以舍弃一半的解(也就是说解必然存在于另一半当中)
而能够舍弃的前提就是原题有一定的规律,就比如说本题,如果numbers[mid] < numbers[j],证明mid 右边(不含 mid)都肯定不是解,于是令 j=mid,
将结果放在 i ~ mid(左闭右闭区间)即可,>是对称的,只不过结果放在 mid+1 ~ j
最后一种情况 numbers[mid] == numbers[j],我们没办法舍弃,因为左右都有可能,这个时候 j -- 令问题规模缩小即可,
这个会导致本题最差情况是 O(n)
posted on 2021-03-04 10:02 FriskyPuppy 阅读(41) 评论(0) 编辑 收藏 举报