美文网首页
414. Third Maximum Number

414. Third Maximum Number

作者: 乘瓠散人 | 来源:发表于2017-11-14 16:49 被阅读9次

    此题主要是C++中set的使用。
    set关联式容器:

    • 实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。
    • 平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。
    • 在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序
    • 构造set集合主要目的是为了快速检索,不可直接去修改键值。
    • set内部是基于红黑树实现的。插入和删除操作效率较高,因为只需要修改相关指针而不用进行数据的移动。操作的时间复杂度为O(logn)
    • C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
    class Solution {
    public:
        int thirdMax(vector<int>& nums) {
            set<int> res;
            for(int i=0;i<nums.size();i++){
                res.insert(nums[i]);
                if(res.size()>3){
                    res.erase(res.begin());
                }
            }
            return res.size() == 3 ? *res.begin() : *res.rbegin();
        }
    };
    

    相关文章

      网友评论

          本文标题:414. Third Maximum Number

          本文链接:https://www.haomeiwen.com/subject/ybsfvxtx.html