题解 | 寻找峰值
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findPeakElement(vector<int>& nums) { // write code here int N = nums.size(); if(N==1) return 0; if(N==2) return nums[0]>nums[1] ? 0 : 1; int left{0},right{N-1}; // 边界情况 if(nums[left]>nums[left+1]) return left; if(nums[right]>nums[right-1]) return right; while(left != right){ if(nums[left+1]>nums[left] && nums[left+1]>nums[left+2]) return left+1; else{ left++; } if(nums[right-1]>nums[right] && nums[right-2]<nums[right-1]) return right-1; else{ right--; } } return -1; } };
看下大多数二分查找,提交有些case过不了,提供一份能过代码,欢迎大佬修正