题目:
题解:
思路:hashmap + set 嵌套即可,只不过元素用 pair 存即可。
代码如下:
using PIS = pair; #define x first #define y second class FoodRatings { public: unordered_map mp1; // 存储<食物,[分数,烹饪方式]> unordered_map > mp2; // 存储<烹饪方式,set<[分数,食物名]>> FoodRatings(vector & fs, vector & cus, vector & rs) { int n=fs.size(); for(int i=0;i mp1[fs[i]]={-rs[i],cus[i]}; // 采用负分数是为了利用set的自排序功能,分数越大,对应的负数越小,自然就排在队列前面 mp2[cus[i]].insert({-rs[i],fs[i]}); } } void changeRating(string food, int rate) { // 获取该食物的分数以及烹饪方式 auto &p=mp1[food]; // 在该食物的烹饪方式删除该食物的分数以及食物名字 mp2[p.y].erase({p.x,food}); // 更新分数 p.x=-rate; // 重新添加该食物以及新的分数 mp2[p.y].insert({p.x,food}); } string highestRated(string cus) { return mp2[cus].begin()->y; } };


![[设计题]leetcode6126:设计食物评分系统(medium) [设计题]leetcode6126:设计食物评分系统(medium)](http://www.mshxw.com/aiimages/31/1027008.png)
