当前位置:  开发笔记 > 编程语言 > 正文

C++:在数组中查找第二个最大元素

如何解决《C++:在数组中查找第二个最大元素》经验,为你挑选了2个好方法。

我是新来的,学习C++语言.现在我必须找到数组中的第二大元素,但我的代码有时并没有给我正确的输出.我有以下代码来查找第二个最大元素.

for(int i = 0;i max)
    {
        second_max = max;
        max = arr[i];
    }
}

此代码有时有效,有时它不会给出第二个max元素的正确值.请帮帮我,我做错了什么?



1> Itban Saeed..:

假设你正在寻找maximumsecond_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];
}



2> Richard Hodg..:

这是一个仅使用标准算法的解决方案:

#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;
}


你也可以使用[`std :: nth_element`](http://en.cppreference.com/w/cpp/algorithm/nth_element)
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有