给定N个人的出生年份和死亡年份,第i个人的出生年份为birth[i],死亡年份为death[i],实现一个方法以计算生存人数最多的年份。
思路:
和区间问题一样,进入一个区间,在左端点+1,离开区间,在右端点的下一个点减去1。
class Solution {
public:
int maxAliveYear(vector<int>& birth, vector<int>& death) {
sort(birth.begin(), birth.end());
sort(death.begin(), death.end());
int a = 0, b = 0;
int n = birth.size();
int cnt = 0, res = 0, m = 0;
while(a < n) {
if(birth[a] <= death[b]) {
++cnt;
if(cnt > m) {
m = cnt;
res = birth[a];
}
++a;
}
else if(birth[a] > death[b]) {
--cnt;
++b;
}
}
return res;
}
};