题目链接
思路一:
文章来源:https://www.toymoban.com/news/detail-638989.html
思路二:
文章来源地址https://www.toymoban.com/news/detail-638989.html
int findPeakElement(int* nums, int numsLen ) {
// write code here
int left=0;
int right=numsLen-1;
int* cur=nums;
int mid=0;
//特殊情况判断两个值,单增和单减
if(cur[0]>cur[1])
{
return 0;
}
if(cur[numsLen-1]>cur[numsLen-2])
{
return numsLen-1;
}
//普遍情况
while(left<right)
{
//中间下标
mid=((left+right)/2);
//其他的正常判断
//上升
if((cur[mid-1]<cur[mid])&&(cur[mid]<cur[mid+1]))
{
left=mid;
}
//下降
else if((cur[mid-1]>cur[mid])&&(cur[mid]>cur[mid+1]))
{
right=mid;
}
//谷底
else if((cur[mid-1]>cur[mid])&&(cur[mid]<cur[mid+1]))
{
left=mid;
}
//峰值
else if((cur[mid-1]<cur[mid])&&(cur[mid]>cur[mid+1]))
{
return mid;
}
}
return -1;
}
到了这里,关于C语言每日一题:15:寻找峰值。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!