712183. Geek's Training

Medium

Here is the blog post for the "Geek's Training" problem:

Geek's Training Slug: geeks-training Difficulty: Medium Id: 712183 Topic Tags: Dynamic Programming, Arrays Company Tags: None

Summary

The Geek's Training problem involves training a group of geeks for a series of tasks. Each task has a specific difficulty level and requires a certain number of hours to train. The goal is to determine the maximum number of tasks that can be completed within a given time frame, subject to the constraint that each task must be trained for its required number of hours.

Detailed Explanation

To solve this problem, we will use dynamic programming to keep track of the maximum number of tasks that can be completed at each hour. We start by initializing an array dp of size n, where n is the total number of hours available for training. Each element dp[i] represents the maximum number of tasks that can be completed within the first i hours.

We then iterate over each task, starting from the easiest one. For each task, we calculate the number of hours required to complete it (hours) and the difficulty level (difficulty). We update our dynamic programming array as follows:

View on GeeksforGeeks
public int maxTasks(int[] difficulties, int hours) {
    int n = difficulties.length;
    int[] dp = new int[hours + 1];
    for (int i = 0; i < n; i++) {
        int difficulty = difficulties[i];
        int hoursRequired = difficulty;
        for (int j = hoursRequired; j >= 1; j--) {
            dp[j] = Math.max(dp[j], dp[j - hoursRequired] + 1);
        }
    }
    return dp[hours];
}

DevExCode

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

© 2026 DevExCode. All rights reserved.