本文主要是介绍162. 寻找峰值——二分查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {
public:int findPeakElement(vector<int>& nums) {//局部肯定有序,当不存在峰值时,数组必定升序或降序int n = nums.size();if(n == 1 || nums[0] > nums[1])return 0;if(nums[n - 1] > nums[n - 2])return n - 1;int left = 0, right = n - 1, mid;while(left <= right){mid = (left + right) / 2;if(nums[mid] > nums[mid - 1] && nums[mid] > nums[mid + 1]){break;}else if(nums[mid] > nums[mid - 1]){left = mid + 1; //向右不会触碰到最右边,所以可以 + 1}else{right = mid; //如果这里 - 1,则可能会碰到最左边,导致上面的if中超出边界}}return mid;}
};
Accepted
63/63 cases passed (0 ms)
Your runtime beats 100 % of cpp submissions
Your memory usage beats 63.44 % of cpp submissions (8.6 MB)
这篇关于162. 寻找峰值——二分查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!