From a78c679c0554f9028f3d0e93eb38986ac440ba1d Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Sun, 9 May 2021 12:42:19 +0800 Subject: [PATCH] New Problem Solution - "1854. Maximum Population Year" --- README.md | 1 + .../MaximumPopulationYear.cpp | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 algorithms/cpp/maximumPopulationYear/MaximumPopulationYear.cpp diff --git a/README.md b/README.md index 00054326..25c6cacb 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ LeetCode | # | Title | Solution | Difficulty | |---| ----- | -------- | ---------- | +|1854|[Maximum Population Year](https://leetcode.com/problems/maximum-population-year/) | [C++](./algorithms/cpp/maximumPopulationYear/MaximumPopulationYear.cpp)|Easy| |1851|[Minimum Interval to Include Each Query](https://leetcode.com/problems/minimum-interval-to-include-each-query/) | [C++](./algorithms/cpp/minimumIntervalToIncludeEachQuery/MinimumIntervalToIncludeEachQuery.cpp)|Hard| |1850|[Minimum Adjacent Swaps to Reach the Kth Smallest Number](https://leetcode.com/problems/minimum-adjacent-swaps-to-reach-the-kth-smallest-number/) | [C++](./algorithms/cpp/minimumAdjacentSwapsToReachTheKthSmallestNumber/MinimumAdjacentSwapsToReachTheKthSmallestNumber.cpp)|Medium| |1849|[Splitting a String Into Descending Consecutive Values](https://leetcode.com/problems/splitting-a-string-into-descending-consecutive-values/) | [C++](./algorithms/cpp/splittingAStringIntoDescendingConsecutiveValues/SplittingAStringIntoDescendingConsecutiveValues.cpp)|Medium| diff --git a/algorithms/cpp/maximumPopulationYear/MaximumPopulationYear.cpp b/algorithms/cpp/maximumPopulationYear/MaximumPopulationYear.cpp new file mode 100644 index 00000000..7d9de390 --- /dev/null +++ b/algorithms/cpp/maximumPopulationYear/MaximumPopulationYear.cpp @@ -0,0 +1,59 @@ +// Source : https://leetcode.com/problems/maximum-population-year/ +// Author : Hao Chen +// Date : 2021-05-09 + +/***************************************************************************************************** + * + * You are given a 2D integer array logs where each logs[i] = [birthi, deathi] indicates the birth and + * death years of the i^th person. + * + * The population of some year x is the number of people alive during that year. The i^th 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. + * + * Constraints: + * + * 1 <= logs.length <= 100 + * 1950 <= birthi < deathi <= 2050 + ******************************************************************************************************/ + +class Solution { + +public: + int maximumPopulation(vector>& logs) { + vector> year; + + for(auto& log : logs) { + year.push_back({log[0], 1}); + year.push_back({log[1], -1}); + } + sort(year.begin(), year.end()); + + int x = year[0][0]; + int cnt = 0, max_cnt = 0; + for(int i=0; i< year.size(); i++) { + cnt += year[i][1]; + if (max_cnt < cnt) { + max_cnt = cnt; + x = year[i][0]; + } + } + return x; + } +};