1.** 因为题目将数组边界看成最小值**,而我们只需要找到其中一个波峰,因此只要不断地往高处走,一定会有波峰。那我们可以每次找一个标杆元素,将数组分成两个区间,每次就较高的一边走,因此也可以用分治来解决,而标杆元素可以选择区间中点。
- 假设 nums[-1] = nums[n] = −∞这个条件也很重要。关系到能不能用if判断语句。
2.step 1:二分查找首先从数组首尾开始,每次取中间值,直到首尾相遇。 step 2:如果中间值的元素大于它右边的元素,说明往右是向下,我们不一定会遇到波峰,但是那就往左收缩区间。因为可能是一直单减的。 step 3:如果中间值小于右边的元素,说明此时往右是向上,向上一定能有波峰,那我们往右收缩区间。一定有波峰是因为nums[n] = −∞ 两个低点之间至少有一个峰 step 4:最后区间收尾相遇的点一定就是波峰。