用 C++ 编写一个程序,找出给定的未排序整数数组中的最大值和第二个最大值
假设我们给出了一个大小为 N 的未排序整数数组。任务是找到数组中存在的不同的 max 和第二个 max 元素。该数组也可能包含重复元素。所以我们只需要找到不同的元素。例如,
输入 1 -
N = 5A[ ] = { 2, 2, 1, 3, 4 }
输出-
4 3
说明- 从给定的数组中,我们可以看到“4”是最大值,“3”是第二个最大值。
输入 2 -
N = 4A[ ] = { 1,3,3,2 }
输出-
3 2
说明- 从给定的大小为 4 的数组中,我们可以看到 '3' 是最大的,而 '2' 是第二大的,因此我们将返回 3 2 作为输出。
解决这个问题的方法
在给定的大小为 N 的数组中,也可能有一些重复的元素。为了从数组中找到最大和第二个最大元素,我们可以初始化两个存储最大和第二个最大值的变量。
最初,如果当前元素大于最大值,那么我们将把它的值存储到最大值,将 的值存储max(previous)到第二个最大值。
为了找到不同的元素,我们将检查当前元素是否等于 max。如果当前值不等于最大值并且也大于第二个最大值,那么我们将用当前值替换第二个最大值的先前值。
初始化并输入 N 大小的数组。
函数 maxAndSecondMax(int arr[], int size) 将数组作为输入和数组的大小。它返回给定数组的最大和第二个最大元素。
迭代数组元素并查找当前元素是否大于最大值,然后将当前值存储到最大值和最大值的先前值以及第二个最大值。
否则,如果当前值大于第二个最大值,则用当前值替换前一个值。此外,当前值不应等于最大值。
检查第二个最大值是否不包含任何值。
返回最大值和第二个最大值作为最终输出。
示例
#include<bits/stdc++.h>输出结果using namespace std;
void maxAndSecondMax(int *arr, int size){
int max= INT_MIN;
int s_max= INT_MIN;
for(int i=0;i<size; ++i){
if(arr[i] >max){
s_max= max;
max= arr[i];
}
else if(arr[i]> s_max && arr[i]!= max){
s_max= arr[i];
}
}
if(s_max==INT_MIN){
s_max= -1;
}
cout<<max<<" "<<s_max;
}
int main(){
int N= 6;
int A[N]= {1,3,2,5,6,3};
maxAndSecondMax(A,N);
return 0;
}
如果我们运行上面的代码,那么它会打印输出,
6 5
6和5是数组中的不同元素,它们是最大值和第二个最大值。
以上是 用 C++ 编写一个程序,找出给定的未排序整数数组中的最大值和第二个最大值 的全部内容, 来源链接: utcz.com/z/358488.html