0
点赞
收藏
分享

微信扫一扫

MapReduce面试重点

沐之轻语 03-18 21:00 阅读 1

文章目录

题意

题目链接

原材料和每道菜需要什么材料,能做那些菜

思路

  • 拓扑排序
  • 暴力

代码

// 暴力
class Solution {
public:
    vector<string> findAllRecipes(vector<string>& recipes, vector<vector<string>>& ingredients, vector<string>& supplies) {
        set<string> visit;
        for (auto &it:supplies)
            visit.insert(it);
        vector<string> ans;
        bool add = true;
        vector<bool> hash(recipes.size(), false);
        while (add)
        {
            add = false;
            for (int i = 0; i < ingredients.size(); i++)
            {
                if (hash[i])
                    continue;
                bool flag = true;
                for (auto &it:ingredients[i])
                    if (visit.find(it) == visit.end())
                    {
                        flag = false;
                        break;
                    }
                if (flag)
                {
                    hash[i] = true;
                    visit.insert(recipes[i]);
                    ans.push_back(recipes[i]);
                    add = true;
                }
            }
        }
        
        return ans;
    }
};
举报

相关推荐

0 条评论