
- Python Basic Tutorial
- Python - Home
- Python - Overview
- Python - Environment Setup
- Python - Basic Syntax
- Python - Comments
- Python - Variables
- Python - Data Types
- Python - Operators
- Python - Decision Making
- Python - Loops
- Python - Numbers
- Python - Strings
- Python - Lists
- Python - Tuples
- Python - Dictionary
- Python - Date & Time
- Python - Functions
- Python - Modules
- Python - Files I/O
- Python - Exceptions
Program to get maximum profit by scheduling jobs in Python
Suppose we have a list of intervals where each interval contains three values [start, end, profit]. We can perform only one task at a time, we have to find the most amount of profit we can get.
So, if the input is like intervals = [[1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]], then the output will be 350, as we can take these two intervals [1, 2, 100] and [2, 100, 250]
To solve this, we will follow these steps
- d := an empty map that contains lists as values
- n := 0
- for each (start, end, profit) in intervals, do
- if end > n, then
- n := end
- if end > n, then
- insert pair (start, end) into d[end]
- A := a list of size n + 1 and fill with 0
- for end in range 0 to size of A, do
- if end is in d, then
- for each (start, profit) pair in d[end], do
- A[end] := maximum of A[end], (A[start] + profit) and A[end - 1]
- for each (start, profit) pair in d[end], do
- otherwise,
- A[end] := A[end - 1]
- if end is in d, then
- return last value of A
Example (Python)
Let us see the following implementation to get better understanding −
from collections import defaultdict class Solution: def solve(self, intervals): d = defaultdict(list) n = 0 for start, end, profit in intervals: if end > n: n = end d[end].append([start, profit]) A = [0 for i in range(n + 1)] for end in range(len(A)): if end in d: for start, profit in d[end]: A[end] = max(A[end], A[start] + profit, A[end - 1]) else: A[end] = A[end - 1] return A[-1] ob = Solution() intervals = [[1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]] print(ob.solve(intervals))
Input
[[1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]]
Output
350
- Related Articles
- Maximum Profit in Job Scheduling in C++
- Program to find maximum profit we can make by holding and selling profit in Python
- Program to find the maximum profit we can get by buying on stock market once in Python
- C++ code to get maximum profit by house making
- Program to find the maximum profit we can get by buying on stock market multiple times in Python
- Program to find maximum profit we can get by buying and selling stocks with a fee in Python?
- Program to find maximum profit by selling diminishing-valued colored balls in Python
- Program to find maximum profit we can make by buying and selling stocks in Python?
- Find Jobs involved in Weighted Job Scheduling in C++
- Program to find maximum profit by cutting the rod of different length in C++
- Program to find maximum credit we can get by finishing some assignments in python
- Program to find maximum profit we can make after k Buy and Sell in python
- Program to find maximum profit after cutting rods and selling same length rods in Python
- Program to get maximum value of power of a list by rearranging elements in Python
- C++ program to find maximum profit we can make by making hamburger and chicken burgers

Advertisements