• set与unordered_set


    使用set

    • 我们需要有序数据(不同元素)。
    • 我们将不得不打印/访问数据(按排序顺序)。
    • 我们需要元素的前任/后继。

    使用unordered_set

    • 我们需要保留一组不同的元素,并且不需要排序。
    • 我们需要单元素访问,即无遍历。

    示例:

    leetcode
    1376.Time Needed to Inform All Employees

    class Solution {
    public:
        int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) {
            map<int, vector<int>> m_es;
            for(int i = 0; i < manager.size(); i++){
                if(m_es.find(manager[i])==m_es.end()){
                    vector<int> x;
                    m_es[manager[i]] = x;
                }
                m_es[manager[i]].push_back(i);
            }
            
            unordered_set<int> visited; // 这里,如果使用set会超时  
            queue<int> q;
            q.push(headID);
            visited.insert(headID);
            int ans = 0;
            while(!q.empty()){
                int boss = q.front();
                q.pop();
                for(auto next:m_es[boss]){
                    if(visited.count(next)!=0){
                        continue;
                    }
                    q.push(next);
                    visited.insert(next);
                    informTime[next] += informTime[boss];
                }
                
                ans = max(informTime[boss], ans); 
            }
            return ans;
        }
    };
    
  • 相关阅读:
    return和yield的区别
    基本装饰器
    javascript实例:两种方式实现tab栏选项卡
    javascript实例:路由的跳转
    javascript实例:点亮灯泡
    标签页QTabWidget
    主窗口QMainWindow和启动画面
    各种对话框
    列表视图QlistView
    拆分窗口QSplitter
  • 原文地址:https://www.cnblogs.com/jiahangok/p/13744186.html
Copyright © 2020-2023  润新知