【算法集训专题攻克篇】第二十二篇之有序集合(困难)

本文聚焦程序员的算法能力提升,探讨了在算法学习中如何感受其魅力。通过一道关于数据结构运用和简单设计的模拟题,解析了如何用代码实现点菜展示表。文章鼓励读者在算法的道路上不断探索,共同进步。

算法集训传送门

  👉引言

在这里插入图片描述

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

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

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

在这里插入图片描述


今日主题:困难


 👉⭐️第一题💎

   ✨题目

1418. 点菜展示表)
在这里插入图片描述

这是一道考虑「数据结构运用」与「简单设计」的模拟题。

我们可以根据最终的 “结果” 反推数据结构存储格式

   ✨代码
function displayTable(orders: string[][]): string[][] {
    const foods = new Set<string>();
    const tables_to_food_counter = new Map<string, Map<string, number>>();

    orders.forEach(function (order) {
        const counter = tables_to_food_counter.get(order[1]) ?? new Map();
        tables_to_food_counter.set(order[1], counter);

        counter.set(order[2], (counter.get(order[2]) ?? 0) + 1);
        return foods.add(order[2]);
    });
    const foodsArr = Array.from(foods);
    foodsArr.sort();
    const table = [["Table", ...foodsArr]];
    tables_to_food_counter.forEach(function (counter, table_id) {
        const table_row = [table_id];
        foodsArr.forEach(function (food) {
            table_row.push(String(counter.get(food) ?? 0));
        });
        table.push(table_row);
    });

    table.sort((a, b) => {
        if (a[0] === "Table") {
            return -1;
        }
        if (b[0] === "Table") {
            return 1;
        }
        if (Number(a[0]) < Number(b[0])) return -1;
        if (Number(a[0]) > Number(b[0])) return 1;


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦想new的出来

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

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

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

打赏作者

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

抵扣说明:

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

余额充值