- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Program to find in which interval how many tasks are worked on in Python

Suppose we have a list of intervals where each interval is like [start, end) and we also have a list of strings called types. Now for a given i, the intervals[i] shows the times someone worked on the job types[i] from [start, end). Two intervals of the same type never overlap or touch. So we have to find a sorted merged list where each item has [start, end, num_types], indicates from start to end, num_types number of tasks were being worked on.

So, if the input is like intervals = [ [0, 3], [5, 7], [0, 7] ] types = ["problem solving", "news","game play"], then the output will be [[0, 3, 2], [3, 5, 1],[5, 7, 2]], as we have these few types of work being done: Between [0, 3) "problem solving" and "game play", between [3, 5) "game play", and between [5, 7) "news" and "game play".

To solve this, we will follow these steps −

ev := a new list

for each interval start end pair (s, e) in intervals, do

insert (s, 1) at the end of ev

insert (e, −1) at the end of ev

sort the list ev

cnt := 0, last := −1

ans := a new list

for each time and increment parameter of events (t, inc) in ev, do

if t is not same as last and cnt is not same as 0, then

cnt := cnt + inc

last := t

return ans

Let us see the following implementation to get better understanding −

## Example

class Solution: def solve(self, intervals, jobs): ev = [] for s, e in intervals: ev.append((s, 1)) ev.append((e, −1)) ev.sort() cnt = 0 last = −1 ans = [] for t, inc in ev: if t != last and cnt != 0: ans.append([last, t, cnt]) cnt += inc last = t return ans ob = Solution() intervals = [ [0, 3], [5, 7], [0, 7] ] types = ["problem solving", "news", "game play"] print(ob.solve(intervals, types))

## Input

[[0, 3],[5, 7],[0, 7]], ["problem solving", "news", "game play"]

## Output

[[0, 3, 2], [3, 5, 1], [5, 7, 2]]

- Related Questions & Answers
- Python Program to find out how many cubes are cut
- Number of Programmer Worked on given Time in Python
- Program to find how many lines intersect in Python
- Program to find maximum time to finish K tasks in Python
- Program to find minimum time to complete all tasks in python
- Program to find minimum time required to complete tasks with k time gap between same type tasks in Python
- Program to find one minimum possible interval to insert into an interval list in Python
- Program to find intervals by merging target interval in Python
- Program to find how many ways we can climb stairs in Python
- Program to find minimum interval to include each query in Python
- Program to find how many swaps needed to sort an array in Python
- Program to find maximum number of courses we can take based on interval time in Python?
- Program to find how many distinct rotation groups are there for a list of words in Python
- Program to find maximum how many water bottles we can drink in Python
- Program to find out how many transfer requests can be satisfied in Python