美文网首页
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