Можно ли найти второе максимальное число из массива целых чисел, пройдя массив только один раз?
В качестве примера у меня есть массив из пяти целых чисел, из которых я хочу найти второе максимальное число. Вот попытка, которую я дал в интервью:
#define MIN -1
int main()
{
int max=MIN,second_max=MIN;
int arr[6]={0,1,2,3,4,5};
for(int i=0;i<5;i++){
cout<<"::"<<arr[i];
}
for(int i=0;i<5;i++){
if(arr[i]>max){
second_max=max;
max=arr[i];
}
}
cout<<endl<<"Second Max:"<<second_max;
int i;
cin>>i;
return 0;
}
Интервьюер, однако, придумал тестовый пример int arr[6]={5,4,3,2,1,0};
, который предотвращает его переход в состояние if
во второй раз.
Я сказал интервьюеру, что единственный способ - разобрать массив два раза (два цикла for
). У кого-нибудь есть лучшее решение?