public IList <string> Find(string[] words, int k) { var result = new List <string>(); var wordToCount = new Dictionary <string, int>(); foreach (var word in words) { if (!wordToCount.ContainsKey(word)) { wordToCount[word] = 0; } wordToCount[word]++; } var myHeap = new MyMinHeap(k); // maintain a min-heap of size - K for storing most frequent words. foreach (var kv in wordToCount) { var newItem = new Item(kv.Value, kv.Key); myHeap.Insert(newItem); } var x = myHeap._data.Select(i => i.word).Reverse(); return(x.ToList()); }
public MedianOfIntStream() { maxHeap = new MyMaxHeap <int>(); minHeap = new MyMinHeap <int>(); }