示例#1
0
 public int Add(int val)
 {
     pq.Add(val);
     if (pq.Count() > size)
     {
         pq.Pop();
     }
     return(pq.Peek());
 }
示例#2
0
        public void HeapOperationsMethod()
        {
            MinHeap minHeap = new MinHeap();

            minHeap.Add(4);
            minHeap.Add(2);
            minHeap.Add(1);
            while (minHeap.Count > 0)
            {
                Console.WriteLine(minHeap.Pop());
            }
        }
示例#3
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);
        }
示例#4
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();
         }
     }
 }