• 【第317长场力扣周赛】最流行的视频创作者


     这道题当时比赛时没写出来,一直报编译错误,还以为是vector二维数组没有开辟大小导致的,后来结束发现是for循环的时候>写成了>=导致数组越界了,这个细节当时没有发现,有点可惜。

    1. class Solution {
    2. public:
    3. vector> mostPopularCreator(vector& cr, vector& ids, vector<int>& views) {
    4. unordered_maplong long> sum,vs;
    5. unordered_map mxv;
    6. long long maxV = 0;
    7. for (int i = 0; i size(); i ++) {
    8. sum[cr[i]] += (long long)views[i];
    9. maxV = max(sum[cr[i]], maxV);
    10. if (!vs.count(cr[i]) || views[i] > vs[cr[i]] || (views[i] == vs[cr[i]] && ids[i] < mxv[cr[i]])) {
    11. mxv[cr[i]] = ids[i], vs[cr[i]] = views[i];
    12. }
    13. }
    14. vector> res;
    15. for (auto &p : sum)
    16. if (p.second == maxV)
    17. res.push_back({p.first, mxv[p.first]});
    18. return res;
    19. }
    20. };

    补题的时候也学到了很多新东西。(我要狠狠吐槽一下csdn这个撤销的操作!!气死了,这篇文章些都快写完了,然后写错了个东西我快捷键撤销一下直接给我撤没了还回不去!!!)

    • map和unordered_map的区别
    • 增强for循环map键值对
    • map调用key和value的简便方法

    1.map和unordered_map的区别

    在 unordered_map 内部,使用的 Hash Table 对数据进行组织,通过把键值 key 映射到 hash 表中的一个位置进行访问,根据 hash 函数的特点, unordered_map 对于元素查找的时间复杂度可以达到 O(1) ,但是,它的元素排列是无序的。

    unordered_map 元素无序,查询快,遍历慢。

    在 map 的内部,使用了「红黑树」red-black tree)来组织数据,因此默认的就已经实现了数据的排序。

    不过,在存储上 map 却比较占用空间,因为在红黑树中,每一个节点都要额外保存父节点和子节点的连接,因此使得每一个节点都占用较大空间来维护红黑树性质。

    map元素有序,占空间。 

    详见 

    map和unordered_map的区别 - 知乎 (zhihu.com)icon-default.png?t=M85Bhttps://zhuanlan.zhihu.com/p/210458185

    2.增强for循环map键值对

    其中sum是map类型的,我们对它进行增强for循环,那么每次提出的p是一个键值对。

    对auto的理解:

     

    3.map调用key和value的简便方法

    我们看到的p.first和p.second指的就是map中键值对的key和value,非常方便,map也可以这样子使用。

  • 相关阅读:
    整合定位技术应对物联网碎片化场景应用
    算法竞赛进阶指南 基本算法 0x04 二分与三分
    (成功最详细版本,自定义传参失败,跳转出现空白页面,校验文件失败)微信小程序扫码跳转小程序指定页面保姆级教程
    PYQT制作动态时钟
    利用Nacos作为配置中心动态修改线程池
    Linux之索引节点inode(index node)
    linux下常用命令
    05 OpenCV图像混合技术
    c++学习--第三部分
    0.1 前言
  • 原文地址:https://blog.csdn.net/m0_62742402/article/details/127658794