예제 #1
0
        public void MinHeap_Solutions()
        {
            var minHeap = new MinHeap <int>();

            minHeap.Push(1);
            Assert.AreEqual(1, minHeap.Peek());

            minHeap.Push(2);
            Assert.AreEqual(1, minHeap.Peek());

            minHeap.Push(3);
            Assert.AreEqual(1, minHeap.Peek());

            minHeap.Push(4);
            Assert.AreEqual(1, minHeap.Peek());

            minHeap.Push(5);
            Assert.AreEqual(1, minHeap.Peek());

            Assert.AreEqual(1, minHeap.PopPush(6));
            Assert.AreEqual(2, minHeap.Peek());

            minHeap.Push(0);
            Assert.AreEqual(0, minHeap.Peek());

            Assert.AreEqual(0, minHeap.Pop());
            Assert.AreEqual(2, minHeap.Pop());
            Assert.AreEqual(3, minHeap.Pop());
            Assert.AreEqual(4, minHeap.Pop());
            Assert.AreEqual(5, minHeap.Pop());
            Assert.AreEqual(6, minHeap.Pop());

            Assert.AreEqual(0, minHeap.Count);
        }
예제 #2
0
 public int Add(int val)
 {
     pq.Add(val);
     if (pq.Count() > size)
     {
         pq.Pop();
     }
     return(pq.Peek());
 }
예제 #3
0
 public KthLargest(int k, int[] nums)
 {
     pq   = new MinHeap(k + 1);
     size = k;
     foreach (int n in nums)
     {
         pq.Add(n);
         if (pq.Count() > size)
         {
             Console.WriteLine("removing: ", pq.Peek());
             pq.Pop();
         }
     }
 }