栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

五月刷题22——有序集合

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

五月刷题22——有序集合

五月刷题22——有序集合
    • 前言
    • 一、今日题目
    • 二、解题思路
      • 1. 1418. 点菜展示表
      • 2. 363. 矩形区域不超过 K 的最大数值和

今日刷题内容: 有序集合

前言
  • 一个算法废材的刷题之路开更了, 更新每天刷题的题解内容
  • 注重个人理解,看难度更新题目数量
  • 题目来源于力扣
  • 新开专栏,争取每日都能做出至少一题=v=
  • 语言java、python、cc++

一、今日题目
  1. 1418. 点菜展示表
  2. 363. 矩形区域不超过 K 的最大数值和
二、解题思路

今天的题目依然只会做一题

1. 1418. 点菜展示表
  1. 用一个列表来存储菜单,不能有重复值,并且菜单是按字典序排序的
  2. 将所有的订单更新到一个字典,其中包含桌号:{菜名: 对应的数量}
  3. 按照桌号升序排序
  4. 将结果还原到返回列表中即可
class Solution:
    def displayTable(self, orders: List[List[str]]) -> List[List[str]]:
        ret = {};
        # 名字在此没有起到作用
        #[名字, 桌号,菜名]
        menu = []  # 获取菜单集合
        for i in orders:
            if i[2] not in menu:
                menu.append(i[2])
            if i[1] not in ret:
                ret[i[1]] = {i[2]: 1}  # 把所有的订单更新到一个字典中
            else:
                if i[2] in ret[i[1]]:  # 如果已经点了这个菜,将这个菜的数量加1
                    ret[i[1]][i[2]] += 1
                else:  # 如果没有点这个菜,将这个菜单拓展
                    ret[i[1]].update({i[2]: 1})
        # 将得到的结果按照桌号升序排序
        l = sorted(ret.items(), key=lambda x: int(x[0]))
        menu.sort()  # 将菜单按字典序排序
        ret = [["Table", ]]  # 获取第一行结果
        for food in menu:
            ret[0].append(food)
        # 获取第二行开始的结果
        for idx, item in enumerate(l):
            ret.append([])  # 新增一个列表
            ret[idx + 1].append(item[0])
            for food in menu:
                ret[idx + 1].append(str(item[1].get(food, 0)))  # 获取每个菜的数量,默认为0

        return ret                                       

2. 363. 矩形区域不超过 K 的最大数值和

还不会做

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925798.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号