【算法集训专题攻克篇】第二十四篇之线段树

本文聚焦算法学习,特别是线段树的应用。通过一道关于菜品排序和桌号菜品统计的题目,展示了如何利用哈希和红黑树解决实际问题。代码示例中,使用了unordered_set和map实现数据结构,体现了算法的魅力和效率。文章鼓励读者在算法的道路上不断探索和提升。
摘要由CSDN通过智能技术生成

算法集训传送门

  👉引言

在这里插入图片描述

铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉

💖 ❄️我们的算法之路❄️💖

   众所周知,作为一名合格的程序员,算法 能力 是不可获缺的,并且在算法学习的过程中我们总是能感受到算法的✨魅力✨。
              ☀️🌟短短几行代码,凝聚无数前人智慧;一个普通循环,即是解题之眼🌟☀️
   💝二分,💝贪心,💝并查集,💝二叉树,💝图论,💝深度优先搜索(dfs),💝宽度优先搜索(bfs),💝数论,💝动态规划等等, 路漫漫其修远兮,吾将上下而求索! 希望在此集训中与大家共同进步,有所收获!!!🎉🎉🎉

在这里插入图片描述


今日主题:线段树


 👉⭐️第一题💎

   ✨题目

      1418. 点菜展示表

在这里插入图片描述
菜品排序通过哈希加排序实现,桌号菜品统计通过红黑树嵌套哈希表实现(相当于直接存储了所有未排序的信息)

   ✨代码
class Solution {
public:
    vector<vector<string>> displayTable(vector<vector<string>>& orders) {
        unordered_set<string> s_food;
        map<int, unordered_map<string, int>> mp_table;
        for (auto i : orders)
        {
            ++mp_table[stoi(i[1])][i[2]];
            s_food.insert(i[2]);
        }
        vector<string> v_food(s_food.begin(), s_food.end());
        sort(v_food.begin(), v_food.end());
        vector<vector<string>> ans(1 + mp_table.size(), vector<string>(1 + v_food.size(), "0"));
        ans[0][0] = "Table";
        int index = 1;
        for (auto i : v_food)
        {
            ans[0][index++] = i;
        }
        auto it = mp_table.begin();
        for (int i = 1; i < ans.size(); ++i)
        {
            ans[i][0] = to_string(it->first);
            for (int j = 1; j < ans[0].size(); ++j)
            {
                ans[i][j] = to_string(it->second[ans[0][j]]);
            }
            ++it;
        }
        return ans;
    }
};


🌹写在最后💖
相信大家对今天的集训内容的理解与以往已经有很大不同了吧,或许也感受到了算法的魅力,当然这是一定的,路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!🌹🌹🌹在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想new的出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值