int f(int*a,int*b,int n)
{
if(!a||!b||n<3) return -1;
int*temp=new int[n]();
int max=a[0],count=0;
for (int i=1;i<n-1;i++)
if(a[i]>max)
{
temp[i]++;
max=a[i];
}
int min=a[n-1];
for (int i=n-2;i>0;i--)
if(a[i]<min)
{
temp[i]++;
min=a[i];
}
for (int i=1;i<n-1;i++)
if(temp[i]==2) b[count++]=a[i];
delete[]temp;
return count;
}乱序数组找出前面的都比他小后面的都比他大的数
最新推荐文章于 2024-07-31 11:08:06 发布
本文介绍了一个用于寻找数组中局部最大值和局部最小值元素的算法。该算法首先初始化最大值为数组的第一个元素,并通过遍历数组来更新最大值及相应的计数器。接着,从数组末尾开始向前遍历,更新最小值及其计数器。最后,通过比较每个元素上的计数器值来确定哪些元素同时是局部最大值和局部最小值。
4426

被折叠的 条评论
为什么被折叠?



