## DEV Community

Abhishek Chaudhary

Posted on

# Number of Flowers in Full Bloom

You are given a 0-indexed 2D integer array `flowers`, where `flowers[i] = [starti, endi]` means the `ith` flower will be in full bloom from `starti` to `endi` (inclusive). You are also given a 0-indexed integer array `persons` of size `n`, where `persons[i]` is the time that the `ith` person will arrive to see the flowers.

Return an integer array `answer` of size `n`, where `answer[i]` is the number of flowers that are in full bloom when the `ith` person arrives.

Example 1:

Input: flowers = [[1,6],[3,7],[9,12],[4,13]], persons = [2,3,7,11]
Output: [1,2,2,2]
Explanation: The figure above shows the times when the flowers are in full bloom and when the people arrive.
For each person, we return the number of flowers in full bloom during their arrival.

Example 2:

Input: flowers = [[1,10],[3,3]], persons = [3,3,2]
Output: [2,2,1]
Explanation: The figure above shows the times when the flowers are in full bloom and when the people arrive.
For each person, we return the number of flowers in full bloom during their arrival.

Constraints:

• `1 <= flowers.length <= 5 * 104`
• `flowers[i].length == 2`
• `1 <= starti <= endi <= 109`
• `1 <= persons.length <= 5 * 104`
• `1 <= persons[i] <= 109`

SOLUTION:

``````from collections import defaultdict
import bisect

class Solution:
def fullBloomFlowers(self, flowers: List[List[int]], persons: List[int]) -> List[int]:
times = defaultdict(int)
for s, e in flowers:
times[s] += 1
times[e + 1] -= 1
timekeys = sorted(times.keys())
prefix = [0]
for t in timekeys:
prefix.append(prefix[-1] + times[t])