Posts

Showing posts with the label Map

Insert Delete GetRandom O(1)

Design a data structure that supports all following operations in average O(1) time. insert(val) : Inserts an item val to the set if not already present. remove(val) : Removes an item val from the set if present. getRandom : Returns a random element from current set of elements. Each element must have the same probability of being returned. Example: // Init an empty set. RandomizedSet randomSet = new RandomizedSet(); // Inserts 1 to the set. Returns true as 1 was inserted successfully. randomSet.insert(1); // Returns false as 2 does not exist in the set. randomSet.remove(2); // Inserts 2 to the set, returns true. Set now contains [1,2]. randomSet.insert(2); // getRandom should return either 1 or 2 randomly. randomSet.getRandom(); // Removes 1 from the set, returns true. Set now contains [2]. randomSet.remove(1); // 2 was already in the set, so return false. randomSet.insert(2); // Since 2 is the only number in the set, getRandom always return 2. randomSet.getRandom();

Group Anagrams

Given an array of strings, group anagrams together. Click this link to try it on Leetcode Example: Input: ["eat", "tea", "tan", "ate", "nat", "bat"] , Output: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] Note: All inputs will be in lowercase. The order of your output does not matter. class Solution {     public List<List<String>> groupAnagrams(String[] strs) {   if (strs.length == 0) return new ArrayList();         Map<String, List> ans = new HashMap<String, List>();         for (String s : strs) {             char[] ca = s.toCharArray();             Arrays.sort(ca);             String key = String.valueOf(ca);             if (!ans.containsKey(key)) ans.put(key, new ArrayList());             ans.get(key).add(s);         }         return new ArrayList(ans.values());     } } Here string is to be stored