713137. Minimize number of Students to be removed

Medium

Minimize number of Students to be removed

Summary

We are given an array arr where each element represents a student's height. We need to find the minimum number of students that should be removed such that no two students have equal heights remaining after removal. The problem requires us to apply dynamic programming to solve this optimization issue.

Detailed Explanation

To solve this problem, we will use dynamic programming. Our goal is to minimize the number of students that should be removed. We can start by initializing a 2D array dp where dp[i][j] represents the minimum number of students that should be removed from indices [0..i] such that no two students have equal heights and the maximum height among them is j.

The base case for our recursion is when i == 0, in which case we don't need to remove any students. Now, let's consider the recursive case where i > 0. If the current student at index i has a height greater than or equal to j, then we can either include this student and recursively calculate the minimum number of students that should be removed from indices [1..i] with maximum height j-1, or exclude this student and recursively calculate the minimum number of students that should be removed from indices [0..i-1] with maximum height j.

Here is a step-by-step breakdown of the solution:

View on GeeksforGeeks
public class MinimizeNumberStudents {
    public static int minRemove(int[] arr) {
        int n = arr.length;
        int[][] dp = new int[n][];
        for (int i = 0; i < n; i++) {
            dp[i] = new int[arr[0]];
        }
        for (int i = 1; i < n; i++) {
            for (int j = arr[0]; j >= arr[i]; j--) {
                if (arr[i] >= j) {
                    dp[i][j] = Math.min(dp[i-1][j], dp[i-1][j-1]);
                } else {
                    dp[i][j] = dp[i-1][j];
                }
            }
        }
        return dp[n-1][arr[0]];
    }
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.