Пример #1
0
        public IList <int> TopKFrequent(int[] nums, int k)
        {
            var occurences = new Dictionary <int, int>();

            foreach (var num in nums)
            {
                if (occurences.ContainsKey(num))
                {
                    occurences[num]++;
                }
                else
                {
                    occurences.Add(num, 1);
                }
            }

            var heap = new MinIntHeap(k);

            foreach (var kvp in occurences)
            {
                heap.Push(kvp);
            }

            var result = new List <int>();

            while (k != 0)
            {
                result.Add(heap.Pop().Key);
                k--;
            }
            return(result);
        }
Пример #2
0
    public void Peek_ZeroSizeTree_ThrowsArgumentOutOfRangeException()
    {
        MinIntHeap minIntHeap = new MinIntHeap(0);
        MaxIntHeap maxIntHeap = new MaxIntHeap(0);

        // Assert
        var ex = Assert.Throws <ArgumentOutOfRangeException>(() => minIntHeap.peek());

        Assert.Contains("Tree size is zero", ex.Message);

        var ex2 = Assert.Throws <ArgumentOutOfRangeException>(() => maxIntHeap.peek());

        Assert.Contains("Tree size is zero", ex2.Message);
    }
Пример #3
0
        public KthLargest(int k, int[] nums)
        {
            _heap = new MinIntHeap(k);

            for (int i = 0; i < k && i < nums.Length; i++)
            {
                _heap.Push(nums[i]);
            }


            for (int i = k; i < nums.Length; i++)
            {
                AddImpl(nums[i]);
            }
        }
Пример #4
0
    public void MinIntHashOverflowTest()
    {
        // Arrange
        MinIntHeap minIntHeap = new MinIntHeap(4);

        int[] arrayAnswer = { 5, 10, 15, 20, 17 };
        int[] myArray     = new int[5];

        // Act
        minIntHeap.add(10);
        minIntHeap.add(15);
        minIntHeap.add(20);
        minIntHeap.add(17);
        minIntHeap.add(5);

        // Assert
        Assert.Equal(8, minIntHeap.GetHeapSize());
    }
Пример #5
0
    public void MinHashNodePullFuncTests()
    {
        // Arrange
        MinIntHeap minIntHeap = new MinIntHeap();

        // 10 15 20 17
        int[] arrayAnswer = { 15, 17, 20 };
        int[] myArray     = new int[4];
        minIntHeap.add(10);
        minIntHeap.add(15);
        minIntHeap.add(20);
        minIntHeap.add(17);

        // Act
        minIntHeap.pull();

        // Assert
        Assert.Equal(15, minIntHeap.pull());
    }
Пример #6
0
    public void MinHashTest()
    {
        // Test for MinHash Creation, add, and pull
        // Arrange
        MinIntHeap minIntHeap = new MinIntHeap();

        int[] arrayAnswer = { 10, 15, 20, 17 };
        int[] myArray     = new int[4];

        // Act
        minIntHeap.add(10);
        minIntHeap.add(15);
        minIntHeap.add(20);
        minIntHeap.add(17);

        // Assert
        Assert.Equal(10, minIntHeap.pull());
        Assert.Equal(15, minIntHeap.pull());
        Assert.Equal(17, minIntHeap.pull());
        Assert.Equal(20, minIntHeap.pull());
    }
Пример #7
0
    public static void Main(string[] args)
    {
        int noOfTC = Convert.ToInt32(Console.ReadLine());

        for (int t = 0; t < noOfTC; ++t)
        {
            ////int num = Convert.ToInt32(Console.ReadLine());
            //string[] s1 = Console.ReadLine().Split(' ');
            ////int[] arr = Array.ConvertAll(s1, int.Parse);
            ////string str = Console.ReadLine();
            //int i = 0;
            MinIntHeap minHeap = new MinIntHeap();
            minHeap.add(10);
            minHeap.add(20);
            minHeap.add(15);
            minHeap.add(12);
            minHeap.add(16);
            int x = minHeap.peek();
            minHeap.poll();
        }
        Console.ReadLine();
    }