题解 | 寻找峰值
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param numsLen int nums数组长度
* @return int整型
*/
int binary_search(int* nums, int left, int right){
int mid = (left + right)/2;
if(left < right){
if(nums[mid] >= nums[left] && nums[mid] >= nums[right]){ //mid所在值比左右大
return mid;
}
else {
return binary_search(nums, left, mid-1); //递归二分查找
return binary_search(nums, mid+1, right);
}
}
return -1;
}
int findPeakElement(int* nums, int numsLen ) {
if(numsLen <= 1){return 0;} // 其他特殊条件
if(nums[0] > nums[1]){return 0;}
if(nums[numsLen-1] > nums[numsLen-2]){return numsLen-1;}
return binary_search(nums, 0, numsLen-1);
}
#为了求职,我做过的疯狂伪装#
