Untitled
Darin
plain_text
2 years ago
1.7 kB
5
Indexable
import java.util.*; class UserSolution { Map<String, List<Product>> products; void init(int N) { products = new HashMap<>(); } void addProduct(int mPrice, int tagNum, char tagName[][]) { Product product = new Product(); product.price = mPrice; String tags[] = new String[tagNum]; for (int i = 0; i < tagNum; i++) { tags[i] = string(tagName[i]); products.computeIfAbsent(tags[i], m -> new ArrayList<>()).add(product); } Arrays.sort(tags); for (int i = 0; i < tagNum; i++) for (int j = i + 1; j < tagNum; j++) for (int k = j + 1; k < tagNum; k++) products.computeIfAbsent(tags[i] + tags[j] + tags[k], m -> new ArrayList<>()).add(product); } int buyProduct(char tag1[], char tag2[], char tag3[]) { String tags[] = { string(tag1), string(tag2), string(tag3) }; Arrays.sort(tags); String tag = tags[0] + tags[1] + tags[2]; products.computeIfAbsent(tag, k -> new ArrayList<>()).removeIf(x -> x.isRemoved); if (products.get(tag).isEmpty()) return -1; Product min = Collections.min(products.get(tag), (a, b) -> a.price - b.price); min.isRemoved = true; return min.price; } void adjustPrice(char tag1[], int changePrice) { for (Product product : products.get(string(tag1))) product.price += changePrice; } String string(char s[]) { int n = -1; while (s[++n] != 0); return new String(s, 0, n); } } class Product { int price; boolean isRemoved; }
Editor is loading...