您的位置:首页 > 其它

Leetcode 414:Third Maximum Number

2017-03-26 10:52 375 查看
c++代码:

       class Solution {

public:

    int thirdMax(vector<int>& nums) {

        

        set<int> top3;

    for (int num : nums) {

        top3.insert(num);

        if (top3.size() > 3)

            top3.erase(top3.begin());

    }

    return top3.size() == 3 ? *top3.begin() : *top3.rbegin();

    }

};

思路:

(1)创建一个容器set,把数字放进去,放进三个数字的时候,set会自动调整,根是第二大的数字,其左子数是第三大的数字,右子数是最大的数字

(2)放进第四个数字的时候,无论这个数字放在何处,其set.begin()一定是这四个数字中第四大的数字,因此删去,这样就形成了新的三个结点的set

(3)后面依次类推,比这三个数小的必然会被删去,能比第三个数大的会把原来的第三个数挤出去,最后剩下三个结点

(4)如果结点只有两个,那么输出最大值,否则输出左子结点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: