方法1: ソートして2番目の要素を取得する この方法は、配列を昇順にソートし、2番目に大きい要素を取得するというものです。
#include <algorithm>
int secondMax(int arr[], int size) {
std::sort(arr, arr + size); // 配列をソートする
return arr[size - 2]; // 2番目に大きい要素を返す
}
方法2: 最大値を求めて、最大値より小さい要素の中で最大値を探す この方法は、最初に配列内の最大値を求め、その最大値より小さい要素の中で最大値を探すというものです。
int secondMax(int arr[], int size) {
int max = arr[0];
int secondMax = arr[0];
// 配列内の最大値を求める
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
secondMax = max;
max = arr[i];
} else if (arr[i] > secondMax && arr[i] != max) {
secondMax = arr[i];
}
}
return secondMax;
}
方法3: 最大値を見つけながら2番目の最大値を更新する この方法は、最大値を見つけながら2番目の最大値を更新していくというものです。
int secondMax(int arr[], int size) {
int max = arr[0];
int secondMax = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
secondMax = max;
max = arr[i];
} else if (arr[i] > secondMax) {
secondMax = arr[i];
}
}
return secondMax;
}
これらの方法を使用して、C++で配列内の第2最大値を求めることができます。ご参考までにお使いください。