题解 | #寻找峰值#
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param numsLen int nums数组长度
* @return int整型
*/
int findPeakElement(int* nums, int numsLen ) {
// write code here
//抽象答案
int left = 0;
int right = 0;
int mid = 0;
if (numsLen == 1)
{
return 0;
}
else if (numsLen == 2)
{
return nums[0] > nums[1] ? 0 : 1;
}
else
{
while (right < numsLen)
{
right = left + 2;
mid = left + 1;
mid = (left + right) / 2;
if (nums[mid] > nums[left] && nums[mid] > nums[right])
{
return mid;
}
left++;
}
return nums[0] > nums[numsLen-1] ? 0 : numsLen-1;
}
//判断左半边
// if (numsLen % 2 == 1)
// {
// while (left < right)
// {
// mid = (left + right) / 2;
// if (nums[mid] > (nums[left] + nums[right]))
// {
// return mid;
// }
// right = mid - 1;
// }
// left = L;
// right = R;
// while (left < right)
// {
// mid = (left + right) / 2;
// if (nums[mid] > (nums[left] + nums[right]))
// {
// return mid;
// }
// left = mid + 1;
// }
// }
return 0;
}
查看4道真题和解析