Untitled
Darin
plain_text
2 years ago
2.0 kB
5
Indexable
import java.util.*; class Solution { static class Product { int price; boolean isbuy; } Product[] prd = new Product[30010]; Map<String, List<Integer>> umap = new HashMap<>(); int tagID; void init(int N) { umap.clear(); tagID = 0; } void addProduct(int mPrice, int tagNum, String[] tagName) { prd[tagID] = new Product(); prd[tagID].price = mPrice; prd[tagID].isbuy = false; List<String> tags = new ArrayList<>(); for (int i = 0; i < tagNum; i++) { tags.add(tagName[i]); umap.computeIfAbsent(tagName[i], k -> new ArrayList<>()).add(tagID); } Collections.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++) { String tag3 = tags.get(i) + " " + tags.get(j) + " " + tags.get(k); umap.computeIfAbsent(tag3, k -> new ArrayList<>()).add(tagID); } } } tagID++; } int buyProduct(String tag1, String tag2, String tag3) { List<String> tags = new ArrayList<>(); tags.add(tag1); tags.add(tag2); tags.add(tag3); Collections.sort(tags); String longtag = tags.get(0) + " " + tags.get(1) + " " + tags.get(2); int isFind = -1; for (int it : umap.getOrDefault(longtag, new ArrayList<>())) { if (!prd[it].isbuy) { if (isFind == -1 || prd[it].price < prd[isFind].price) { isFind = it; } } } if (isFind == -1) return -1; else { prd[isFind].isbuy = true; return prd[isFind].price; } } void adjustPrice(String tag1, int changePrice) { for (int it : umap.getOrDefault(tag1, new ArrayList<>())) { prd[it].price += changePrice; } } }
Editor is loading...