- 前言
- 一、今日题目
- 二、解题思路
- 1. 1418. 点菜展示表
- 2. 363. 矩形区域不超过 K 的最大数值和
今日刷题内容: 有序集合 前言
- 一个算法废材的刷题之路开更了, 更新每天刷题的题解内容
- 注重个人理解,看难度更新题目数量
- 题目来源于力扣
- 新开专栏,争取每日都能做出至少一题=v=
- 语言java、python、cc++
一、今日题目
- 1418. 点菜展示表
- 363. 矩形区域不超过 K 的最大数值和
今天的题目依然只会做一题
1. 1418. 点菜展示表
- 用一个列表来存储菜单,不能有重复值,并且菜单是按字典序排序的
- 将所有的订单更新到一个字典,其中包含桌号:{菜名: 对应的数量}
- 按照桌号升序排序
- 将结果还原到返回列表中即可
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 的最大数值和
还不会做



