1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public: int maxAliveYear(vector<int>& birth, vector<int>& death) { unordered_map<int, int> born; unordered_map<int, int> dead; for(auto& b : birth) ++born[b]; for(auto& d : death) ++dead[d]; vector<int> dp(102); dp[0] = 0; int maxLive = 0; int ret = 0; for(int i = 1; i <= 101; ++i) { int year = 1900 + i - 1; dp[i] = dp[i - 1] + born[year] - dead[year - 1]; if(dp[i] > maxLive) { maxLive = dp[i]; ret = year; } } return ret; } };
|