714203. Job Sequencing Problem

Medium

Job Sequencing Problem

Summary

The Job Sequencing problem is a dynamic programming problem that involves scheduling jobs with different deadlines and processing times. The goal is to schedule the jobs in such a way that all deadlines are met, while also maximizing the total processing time.

Detailed Explanation

To solve this problem, we can use a greedy approach. We first sort the jobs based on their deadlines and then iterate over the sorted jobs. For each job, we check if it can be scheduled without violating any deadline. If it can, we schedule it and update our current time accordingly. If not, we skip that job.

Here's a step-by-step breakdown of the solution:

  1. Sort the jobs based on their deadlines.
  2. Initialize a variable time to 0, which represents the current time.
  3. Iterate over the sorted jobs:
    • For each job, check if it can be scheduled without violating any deadline. To do this, compare the job's deadline with the current time. If the job's deadline is greater than or equal to the current time, schedule the job and update the time variable to the job's deadline.
    • If the job cannot be scheduled (i.e., its deadline is less than the current time), skip that job and move on to the next one.
  4. Return the total processing time of all scheduled jobs.

Here's an ASCII art diagram illustrating the process:

          +---------------+
          |  Job A  |
          +---------------+
                  |
                  v
          +---------------+
          |  Time = 0   |
          +---------------+
                  |
                  v
          +---------------+
          |  Job B (deadline 3)|
          |  (processing time 2)|
          +---------------+
                  |
                  v
          +---------------+
          |  Time = 3   |
          +---------------+
                  |
                  v
          +---------------+
          |  Job C (deadline 5)|
          |  (processing time 4)|
          +---------------+
                  |
                  v
          +---------------+
          |  Time = 7   |
          +---------------+

The time complexity of this solution is O(n log n), where n is the number of jobs, due to the sorting step. The space complexity is O(1), as we only use a few variables to store our current time and job information.

Optimized Solutions

Java

View on GeeksforGeeks
import java.util.Arrays;
import java.util.Comparator;

public class JobSequencing {
    public static int jobScheduling(int[] deadLine, int[] procTime) {
        int n = deadLine.length;
        Integer[][] jobs = new Integer[n][2];
        for (int i = 0; i < n; i++) {
            jobs[i] = new Integer[]{deadLine[i], procTime[i]};
        }
        Arrays.sort(jobs, Comparator.comparingInt(a -> a[0]));
        int time = 0;
        int totalProc = 0;
        for (int[] job : jobs) {
            if (time + job[1] <= job[0]) {
                time += job[1];
                totalProc += job[1];
            }
        }
        return totalProc;
    }
}

DevExCode

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

© 2026 DevExCode. All rights reserved.