Leetcode 414:Third Maximum Number

来源:互联网 发布:mac怎么关掉程序 编辑:程序博客网 时间:2024/05/21 17:51

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)如果结点只有两个,那么输出最大值,否则输出左子结点。

0 0
原创粉丝点击