我是新来的,学习C++语言.现在我必须找到数组中的第二大元素,但我的代码有时并没有给我正确的输出.我有以下代码来查找第二个最大元素.
for(int i = 0;imax) { second_max = max; max = arr[i]; } }
此代码有时有效,有时它不会给出第二个max元素的正确值.请帮帮我,我做错了什么?
假设你正在寻找maximum
和second_maximum
元素,我注意到你正在跳过场景,当arr[i]
大于second_max
但小于max
例如以下场景时你的代码将无法正常工作
max: 15 second_max = 7 arr[i] = 12
在第一个if
条件下面的代码中添加以下条件:
else if(arr[i] > second_max) { second_max = arr[i]; }
这是一个仅使用标准算法的解决方案:
#include#include #include int second_max(std::vector v) { using namespace std; sort(begin(v), end(v), std::greater<>()); auto last = unique(begin(v), end(v)); auto size = last - begin(v); return (size == 0) ? 0 : (size == 1) ? v[0] : v[1]; } int main() { using namespace std; cout << second_max({ 3,5,7,7,2,4,3,2,6 }) << endl; return 0; }