Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Job Scheduling with Deadlines in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal of the Job Scheduling with Deadlines problem?
To schedule jobs in such a way that the maximum number of jobs are completed before their deadlines, maximizing total profit or count.
Click to reveal answer
beginner
In Job Scheduling with Deadlines, why do we sort jobs by profit before scheduling?
Sorting jobs by profit ensures we consider the most profitable jobs first, helping maximize total profit when scheduling within deadlines.
Click to reveal answer
intermediate
What data structure is commonly used to keep track of free time slots in Job Scheduling with Deadlines?
An array or list is used to mark free time slots, where each index represents a time unit and indicates if it is occupied or free.
Click to reveal answer
intermediate
Explain the greedy approach used in Job Scheduling with Deadlines.
The greedy approach schedules jobs in descending order of profit, placing each job in the latest available time slot before its deadline to maximize profit.
Click to reveal answer
beginner
What happens if a job cannot be scheduled before its deadline in Job Scheduling with Deadlines?
If no free time slot is available before the job's deadline, the job is skipped and not scheduled.
Click to reveal answer
What is the first step in the Job Scheduling with Deadlines algorithm?
ASort jobs by deadline in ascending order
BSort jobs by profit in descending order
CSchedule jobs randomly
DAssign all jobs to the first time slot
How do we decide where to place a job in the schedule?
AIn the latest available time slot before its deadline
BIn the earliest available time slot after its deadline
CIn the first time slot regardless of deadline
DIn the middle time slot
What data structure is typically used to track free time slots in Job Scheduling with Deadlines?
AArray or list
BQueue
CBinary tree
DStack
If a job's deadline is 3 and time slots 1 and 2 are occupied, where will the job be scheduled?
ATime slot 4
BTime slot 1
CNot scheduled
DTime slot 3 if free
What is the time complexity of the greedy Job Scheduling with Deadlines algorithm after sorting?
AO(n log n)
BO(n)
CO(n^2)
DO(log n)
Describe the greedy strategy used to solve the Job Scheduling with Deadlines problem.
Think about how to maximize profit by scheduling the most valuable jobs first.
You got /3 concepts.
    Explain how time slots are managed and checked when scheduling jobs with deadlines.
    Imagine a calendar where you mark which days are free to schedule tasks.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main goal of the Job Scheduling with Deadlines problem?
      easy
      A. Maximize the total profit by scheduling jobs before their deadlines
      B. Minimize the number of jobs scheduled
      C. Schedule jobs in the order they appear without considering deadlines
      D. Maximize the number of jobs scheduled regardless of profit

      Solution

      1. Step 1: Understand the problem goal

        The problem aims to schedule jobs so that each job finishes before its deadline and the total profit is maximized.
      2. Step 2: Identify the objective

        Maximizing total profit means choosing jobs carefully, not just scheduling all or in order.
      3. Final Answer:

        Maximize the total profit by scheduling jobs before their deadlines -> Option A
      4. Quick Check:

        Goal = Maximize profit before deadlines [OK]
      Hint: Focus on profit and deadlines to maximize earnings [OK]
      Common Mistakes:
      • Ignoring deadlines and scheduling all jobs
      • Trying to schedule jobs in input order
      • Maximizing number of jobs instead of profit
      2. Which of the following is the correct way to sort jobs by profit in descending order in JavaScript?
      easy
      A. jobs.sort((a, b) => a.profit - b.profit);
      B. jobs.sort((a, b) => b.profit - a.profit);
      C. jobs.sort((a, b) => a.deadline - b.deadline);
      D. jobs.sort((a, b) => b.deadline - a.deadline);

      Solution

      1. Step 1: Understand sorting by profit descending

        To sort descending, subtract b.profit - a.profit so higher profits come first.
      2. Step 2: Check the options

        jobs.sort((a, b) => b.profit - a.profit); uses b.profit - a.profit, which sorts descending by profit correctly.
      3. Final Answer:

        jobs.sort((a, b) => b.profit - a.profit); -> Option B
      4. Quick Check:

        Descending profit sort = b.profit - a.profit [OK]
      Hint: Use b - a for descending numeric sort in JavaScript [OK]
      Common Mistakes:
      • Using a.profit - b.profit which sorts ascending
      • Sorting by deadline instead of profit
      • Confusing ascending and descending order
      3. Given the jobs array:
      const jobs = [
        {id: 'a', deadline: 2, profit: 100},
        {id: 'b', deadline: 1, profit: 19},
        {id: 'c', deadline: 2, profit: 27},
        {id: 'd', deadline: 1, profit: 25},
        {id: 'e', deadline: 3, profit: 15}
      ];

      After scheduling jobs to maximize profit with deadlines, which jobs are selected (in order of scheduling)?
      medium
      A. ['b', 'd', 'e']
      B. ['a', 'c', 'e']
      C. ['a', 'd']
      D. ['a', 'd', 'e']

      Solution

      1. Step 1: Sort jobs by profit descending

        Sorted: a(100,2), c(27,2), d(25,1), b(19,1), e(15,3)
      2. Step 2: Schedule jobs greedily before deadlines

        Schedule 'a' at latest slot <=2 (slot 2), 'c' at latest <=2 (slot 1 since 2 taken), skip 'b' (slot 1 taken), 'd' at slot 1 (since 'c' was assigned slot 1, 'd' cannot be assigned), 'e' at latest <=3 (slot 3). Correct scheduling is 'a' at slot 2, 'd' at slot 1, 'e' at slot 3. Order: ['a', 'd', 'e']
      3. Final Answer:

        ['a', 'd', 'e'] -> Option D
      4. Quick Check:

        Max profit jobs scheduled = ['a', 'd', 'e'] [OK]
      Hint: Sort by profit, assign latest free slot before deadline [OK]
      Common Mistakes:
      • Scheduling jobs only by deadline order
      • Ignoring profit and picking lower profit jobs
      • Not checking slot availability before deadline
      4. Consider this code snippet for job scheduling:
      jobs.sort((a, b) => b.profit - a.profit);
      const result = [];
      const slot = Array(jobs.length).fill(false);
      for (let job of jobs) {
        for (let j = 0; j <= job.deadline; j++) {
          if (!slot[j]) {
            slot[j] = true;
            result.push(job.id);
            break;
          }
        }
      }
      console.log(result);

      What is the main bug in this code?
      medium
      A. The jobs array is not sorted by deadline
      B. The slot array should be initialized with true, not false
      C. The inner loop should run from job.deadline down to 1, not 0 up to deadline
      D. The result array should store job profits, not ids

      Solution

      1. Step 1: Analyze slot assignment loop

        The inner loop checks slots from 0 up to deadline, but slots should be checked from deadline down to 1 to assign latest free slot.
      2. Step 2: Understand correct slot checking order

        Checking from deadline down ensures jobs are scheduled as late as possible before deadline, maximizing slot usage.
      3. Final Answer:

        The inner loop should run from job.deadline down to 1, not 0 up to deadline -> Option C
      4. Quick Check:

        Check slots backward from deadline [OK]
      Hint: Check slots backward from deadline to assign latest free slot [OK]
      Common Mistakes:
      • Checking slots forward from 0 wastes early slots
      • Initializing slot array incorrectly
      • Confusing sorting criteria
      5. You have jobs with deadlines and profits:
      const jobs = [
        {id: 'j1', deadline: 4, profit: 70},
        {id: 'j2', deadline: 1, profit: 80},
        {id: 'j3', deadline: 1, profit: 30},
        {id: 'j4', deadline: 2, profit: 100},
        {id: 'j5', deadline: 3, profit: 40}
      ];

      Using job scheduling with deadlines, what is the maximum total profit and which jobs are scheduled?
      hard
      A. Total profit 290; jobs scheduled: ['j4', 'j2', 'j1', 'j5']
      B. Total profit 220; jobs scheduled: ['j2', 'j4', 'j1']
      C. Total profit 240; jobs scheduled: ['j4', 'j2', 'j5', 'j3']
      D. Total profit 210; jobs scheduled: ['j2', 'j4', 'j5']

      Solution

      1. Step 1: Sort jobs by profit descending

        Sorted: j4(100,2), j2(80,1), j1(70,4), j5(40,3), j3(30,1)
      2. Step 2: Schedule jobs greedily before deadlines

        Assign j4 at slot 2, j2 at slot 1, j1 at slot 4, j5 at slot 3. j3 cannot fit. Total profit: 100+80+70+40=290. Scheduled: ['j4', 'j2', 'j1', 'j5']
      3. Final Answer:

        Total profit 290; jobs scheduled: ['j4', 'j2', 'j1', 'j5'] -> Option A
      4. Quick Check:

        Max profit = 290 with jobs j4,j2,j1,j5 [OK]
      Hint: Sort by profit, assign latest free slot before deadline, sum profits [OK]
      Common Mistakes:
      • Not assigning jobs to latest possible slot
      • Miscounting total profit
      • Ignoring job deadlines when scheduling
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard