该题用二分算法解“山脉数组的峰顶索引”,有需要借鉴即可。
目录
- 1.题目
- 2.总结
1.题目
题目链接:LINK
暴力求解很简单,这里不再提及。
这个可以根据峰顶值分为两部分,因而具有“二段性”,可以用二分算法,一是大于前一个数字的值,二是小于前一个数字的值。
如下图所示:
然后根据此图我们可以得出代码逻辑:
然后我们可以得出代码:
class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 1, right = arr.size() - 1 - 1;while(left < right){int mid = left + (right - left + 1) / 2;if(arr[mid] > arr[mid - 1]) left = mid;else right = mid - 1;}return left;}
};
2.总结
这个题没什么好说的,抓好“二段性”这个点就可以用二分,然后就结束了。
EOF