5. Maximum Population Year
You are given a 2D integer array logs
where each logs[i] = [birthi, deathi]
indicates the birth and death years of the ith
person.
The population of some year x
is the number of people alive during that year. The ith
person is counted in year x
's population if x
is in the inclusive range [birthi, deathi - 1]
. Note that the person is not counted in the year that they die.
Return the earliest year with the maximum population.
Example 1:
Input: logs = [[1993,1999],[2000,2010]]
Output: 1993
Explanation: The maximum population is 1, and 1993 is the earliest year with this population.
Example 2:
Input: logs = [[1950,1961],[1960,1971],[1970,1981]]
Output: 1960
Explanation:
The maximum population is 2, and it had happened in years 1960 and 1970.
The earlier year between them is 1960.
Solution: (Similar to car pooling)
Maintaining the count of population at each time stamp
class Solution
{
public:
int maximumPopulation(vector<vector<int>> &logs)
{
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
for (int i = 0; i < logs.size(); i++)
{
pq.push({logs[i][0], 1});
pq.push({logs[i][1], -1});
}
int maxPeople = 0;
int maxYear = 0;
int person = 0;
while (!pq.empty())
{
int year = pq.top().first;
int c = pq.top().second;
pq.pop();
person += c;
if (person > maxPeople)
{
maxPeople = person;
maxYear = year;
}
}
return maxYear;
}
};
Last updated
Was this helpful?