LeetCode Weekly Contest 485 Discussion and Solution
Priyanshu Chaurasiya
about 1 month ago
Priyanshu Chaurasiya
about 1 month ago

Join the conversation by signing in below!
| Problem | Difficulty | Points | Status |
|---|---|---|---|
| 1 | Easy | 3 | Solved |
| 2 | Medium | 4 | Unsolved |
| 3 | Medium | 5 | Solved |
| 4 | Hard | 6 | Unsolved |
class Solution {
public int vowelConsonantScore(String s) {
int n = s.length();
Set<Character> vowels = Set.of('a', 'e', 'i', 'o', 'u');
int c = 0;
int v = 0;
for(int i = 0; i < n; i++){
char ch = s.charAt(i);
if(ch >= 'a' && ch <= 'z'){
if(vowels.contains(ch)) v++;
else c++;
}
}
return c > 0 ? v / c : c;
}
}class AuctionSystem {
Map<Integer, Map<Integer, Integer>> map;
TreeMap<Integer, TreeMap<Integer, TreeSet<Integer>>> bid;
public AuctionSystem() {
map = new HashMap<>();
bid = new TreeMap<>();
}
public void addBid(int userId, int itemId, int bidAmount) {
if(!map.containsKey(itemId)) map.put(itemId, new HashMap<>());
if(!bid.containsKey(itemId)) bid.put(itemId, new TreeMap<>());
Map<Integer, Integer> itemMap = map.get(itemId);
TreeMap<Integer, TreeSet<Integer>> bidMap = bid.get(itemId);
int oldBid = itemMap.getOrDefault(userId, -1);
itemMap.put(userId, bidAmount);
if(bidMap.containsKey(oldBid)){
TreeSet<Integer> bidSet = bidMap.get(oldBid);
bidSet.remove(userId);
if(bidSet.size() == 0) bidMap.remove(oldBid);
}
if(!bidMap.containsKey(bidAmount)){
bidMap.put(bidAmount, new TreeSet<>());
}
bidMap.get(bidAmount).add(userId);
}
public void updateBid(int userId, int itemId, int bidAmount) {
if(!map.containsKey(itemId)) map.put(itemId, new HashMap<>());
if(!bid.containsKey(itemId)) bid.put(itemId, new TreeMap<>());
Map<Integer, Integer> itemMap = map.get(itemId);
TreeMap<Integer, TreeSet<Integer>> bidMap = bid.get(itemId);
int oldBid = itemMap.getOrDefault(userId, -1);
itemMap.put(userId, bidAmount);
if(bidMap.containsKey(oldBid)){
TreeSet<Integer> bidSet = bidMap.get(oldBid);
bidSet.remove(userId);
if(bidSet.size() == 0) bidMap.remove(oldBid);
}
if(!bidMap.containsKey(bidAmount)){
bidMap.put(bidAmount, new TreeSet<>());
}
bidMap.get(bidAmount).add(userId);
}
public void removeBid(int userId, int itemId) {
if(!map.containsKey(itemId)) map.put(itemId, new HashMap<>());
if(!bid.containsKey(itemId)) bid.put(itemId, new TreeMap<>());
Map<Integer, Integer> itemMap = map.get(itemId);
TreeMap<Integer, TreeSet<Integer>> bidMap = bid.get(itemId);
int oldBid = itemMap.getOrDefault(userId, -1);
itemMap.remove(userId);
if(bidMap.containsKey(oldBid)){
TreeSet<Integer> bidSet = bidMap.get(oldBid);
bidSet.remove(userId);
if(bidSet.size() == 0) bidMap.remove(oldBid);
}
}
public int getHighestBidder(int itemId) {
Map<Integer, Integer> itemMap = map.getOrDefault(itemId, null);
if(itemMap == null || itemMap.size() == 0) return -1;
TreeMap<Integer, TreeSet<Integer>> bidMap = bid.getOrDefault(itemId, null);
if(bidMap == null || bidMap.size() == 0) return -1;
int maxBid = bidMap.lastKey();
TreeSet<Integer> bidSet = bidMap.get(maxBid);
if(bidSet.size() == 0) return -1;
return bidSet.last();
}
}
/**
* Your AuctionSystem object will be instantiated and called as such:
* AuctionSystem obj = new AuctionSystem();
* obj.addBid(userId,itemId,bidAmount);
* obj.updateBid(userId,itemId,newAmount);
* obj.removeBid(userId,itemId);
* int param_4 = obj.getHighestBidder(itemId);
*/No comments yet, Start the conversation!