给你一个整数数组,返回此数组中第三大的数 。如果不存在,则返回数组中最大的数。
第一行输入数组中元素的个数,第二行输入数组元素。
样例输入
3
3 2 1
样例输出
1
样例输入
2
1 2
样例输出
2
样例输入
4
2 2 3 1
样例输出
1
给你一个整数数组,返回此数组中第三大的数 。如果不存在,则返回数组中最大的数。
第一行输入数组中元素的个数,第二行输入数组元素。
样例输入
3
3 2 1
样例输出
1
样例输入
2
1 2
样例输出
2
样例输入
4
2 2 3 1
样例输出
1
引自免费微信小程序:皆我百晓生
要解决这个问题,你可以使用C++中的标准库函数std::sort()
对数组进行排序,然后找到数组中的第三个最大值。以下是详细的步骤和代码实现:
third_largest
的函数,它接受一个整数数组以及其大小作为参数。std::sort()
函数对数组进行升序排序。arr.length - 3
的元素。下面是完整的C++代码实现:
#include <iostream>
#include <vector>
#include <algorithm>
int third_largest(const std::vector<int>& arr) {
// 对数组进行排序
std::sort(arr.begin(), arr.end());
int size = arr.size();
// 如果数组长度小于3,返回最大值
if (size < 3) {
return arr[size - 1];
} else {
// 返回第三个最大的数
return arr[size - 3];
}
}
int main() {
int n;
std::cin >> n;
std::vector<int> arr(n);
for (int i = 0; i < n; ++i) {
std::cin >> arr[i];
}
int result = third_largest(arr);
std::cout << result << std::endl;
return 0;
}
这段代码首先读取输入的数组长度和元素,然后调用third_largest
函数计算并返回第三个最大的数。注意,这里我们使用了std::vector
来存储数组,因为它可以自动管理内存,并且提供了方便的操作接口。如果你必须使用原始数组,只需要将上述代码中的std::vector<int>
替换为int*
和数组长度,并相应地修改其他部分。