当前位置:网站首页>LeetCode 2353. 设计食物评分系统(sortedcontainers)
LeetCode 2353. 设计食物评分系统(sortedcontainers)
2022-08-02 17:48:00 【Michael阿明】
1. 题目
设计一个支持下述操作的食物评分系统:
- 修改 系统中列出的某种食物的评分。
- 返回系统中某一类烹饪方式下评分最高的食物。
实现 FoodRatings 类:
FoodRatings(String[] foods, String[] cuisines, int[] ratings)初始化系统。食物由 foods、cuisines 和 ratings 描述,长度均为 n 。foods[i]是第 i 种食物的名字。cuisines[i]是第 i 种食物的烹饪方式。ratings[i]是第 i 种食物的最初评分。void changeRating(String food, int newRating)修改名字为 food 的食物的评分。String highestRated(String cuisine)返回指定烹饪方式 cuisine 下评分最高的食物的名字。如果存在并列,返回 字典序较小 的名字。
注意,字符串 x 的字典序比字符串 y 更小的前提是:x 在字典中出现的位置在 y 之前,也就是说,要么 x 是 y 的前缀,或者在满足 x[i] != y[i] 的第一个位置 i 处,x[i] 在字母表中出现的位置在 y[i] 之前。
示例:
输入
["FoodRatings", "highestRated", "highestRated", "changeRating", "highestRated", "changeRating", "highestRated"]
[[["kimchi", "miso", "sushi", "moussaka", "ramen", "bulgogi"], ["korean", "japanese", "japanese", "greek", "japanese", "korean"], [9, 12, 8, 15, 14, 7]], ["korean"], ["japanese"], ["sushi", 16], ["japanese"], ["ramen", 16], ["japanese"]]
输出
[null, "kimchi", "ramen", null, "sushi", null, "ramen"]
解释
FoodRatings foodRatings = new FoodRatings(["kimchi", "miso", "sushi", "moussaka", "ramen", "bulgogi"], ["korean", "japanese", "japanese", "greek", "japanese", "korean"], [9, 12, 8, 15, 14, 7]);
foodRatings.highestRated("korean"); // 返回 "kimchi"
// "kimchi" 是分数最高的韩式料理,评分为 9 。
foodRatings.highestRated("japanese"); // 返回 "ramen"
// "ramen" 是分数最高的日式料理,评分为 14 。
foodRatings.changeRating("sushi", 16); // "sushi" 现在评分变更为 16 。
foodRatings.highestRated("japanese"); // 返回 "sushi"
// "sushi" 是分数最高的日式料理,评分为 16 。
foodRatings.changeRating("ramen", 16); // "ramen" 现在评分变更为 16 。
foodRatings.highestRated("japanese"); // 返回 "ramen"
// "sushi" 和 "ramen" 的评分都是 16 。
// 但是,"ramen" 的字典序比 "sushi" 更小。
提示:
1 <= n <= 2 * 10^4
n == foods.length == cuisines.length == ratings.length
1 <= foods[i].length, cuisines[i].length <= 10
foods[i]、cuisines[i] 由小写英文字母组成
1 <= ratings[i] <= 10^8
foods 中的所有字符串 互不相同
在对 changeRating 的所有调用中,food 是系统中食物的名字。
在对 highestRated 的所有调用中,cuisine 是系统中 至少一种 食物的烹饪方式。
最多调用 changeRating 和 highestRated 总计 2 * 10^4 次
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/design-a-food-rating-system
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 使用 python 的有序 set
from sortedcontainers import SortedSet,或者 C++ 的 set
from collections import defaultdict
from sortedcontainers import SortedSet
class FoodRatings:
def __init__(self, foods: List[str], cuisines: List[str], ratings: List[int]):
self.s = defaultdict(SortedSet)
self.map = {
}
for food, cuisine, rate in zip(foods, cuisines, ratings):
self.s[cuisine].add((-rate, food))
self.map[food] = [-rate, cuisine]
def changeRating(self, food: str, newRating: int) -> None:
rate, cuisine = self.map[food]
self.s[cuisine].discard((rate, food))
self.map[food] = [-newRating, cuisine]
self.s[cuisine].add((-newRating, food))
def highestRated(self, cuisine: str) -> str:
return self.s[cuisine][0][1]
708 ms 48.7 MB Python3
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
边栏推荐
- 判断文件属主
- 织梦提示信息提示框美化
- Data Governance: The Evolution of Data Integration and Application Patterns
- golang刷leetcode 经典(2)拓扑排序
- 字节面试官狂问我:你没有高并发、性能调优经验,为什么录取你?
- 详细教学——1688关键词搜索API操作流程
- 小程序毕设作品之微信体育馆预约小程序毕业设计成品(6)开题答辩PPT
- E-Surfing Cloud 4.0 Distributed Cloud Enables Digital Transformation of Thousands of Industries
- STL案例-招聘新员工
- Since September, China has granted zero-tariff treatment to 98% of tax items from 16 countries including Togo
猜你喜欢
随机推荐
【案例】2D变换-旋转动画
vulnhub W34kn3ss: 1
透过案例看清API接口的作用——演示1688商品详情接口
一朵“云“如何带来产业新变革
Mini Program Graduation Works WeChat Gymnasium Reservation Mini Program Graduation Design Finished Product (8) Graduation Design Thesis Template
redis总结_基础
Simulink脚本自动创建Autosar Parameter Port及Mapping
载20(S)-人参皂苷/细胞穿膜肽-单克隆抗体-载丝裂霉素白蛋白纳米微球的制备
安全至上:落地DevSecOps最佳实践你不得不知道的工具
2022高压电工特种作业证考试题库及答案
【21天学习挑战赛学习打卡】顺序查找
MySQL基本操作和基于MySQL基本操作的综合实例项目
golang刷leetcode 经典(1) LRU缓存机制
天翼云4.0分布式云赋能千行百业数字化转型
Go 语言快速入门指南: 介绍及安装
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Works (7) Mid-term Inspection Report
无法超越的100米_百兆以太网传输距离_网线有哪几种?
My recursive never burst stack
0725-面试记录
Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor









