Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
class Solution { public List
findAllRecipes(String[] recipes, List
> ingredients, String[] supplies) { List
ans = new ArrayList<>(); Set
available = new HashSet<>(Arrays.asList(supplies)); Map
> ingredientToRecipes = new HashMap<>(); Map
inDegree = new HashMap<>(); for (int i = 0; i < recipes.length; ++i) { int nonAvailable = 0; for (String ing : ingredients.get(i)) { if (!available.contains(ing)) { ingredientToRecipes.computeIfAbsent(ing, s -> new HashSet<>()).add(recipes[i]); ++nonAvailable; } } if (nonAvailable == 0) { ans.add(recipes[i]); }else { inDegree.put(recipes[i], nonAvailable); } } for (int i = 0; i < ans.size(); ++i) { String recipe = ans.get(i); if (ingredientToRecipes.containsKey(recipe)) { for (String rcp : ingredientToRecipes.remove(recipe)) { if (inDegree.merge(rcp, -1, Integer::sum) == 0) { ans.add(rcp); } } } } return ans; } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)