F_JustWei's Studio.

5750. 人口最多的年份

字数统计: 346阅读时长: 1 min
2021/05/09 Share

5750. 人口最多的年份

给你一个二维整数数组 logs ,其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。

年份 x人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足:x 在闭区间 [birthi, deathi - 1] 内。注意,人不应当计入他们死亡当年的人口中。

返回 人口最多最早 的年份。

示例 1:

1
2
3
输入:logs = [[1993,1999],[2000,2010]]
输出:1993
解释:人口最多为 1 ,而 1993 是人口为 1 的最早年份。

示例 2:

1
2
3
4
5
输入:logs = [[1950,1961],[1960,1971],[1970,1981]]
输出:1960
解释:
人口最多为 2 ,分别出现在 1960 和 1970 。
其中最早年份是 1960 。

提示:

  • 1 <= logs.length <= 100
  • 1950 <= birthi < deathi <= 2050

C++代码:

额外空间:
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int maximumPopulation(vector<vector<int>>& logs) {
vector<int> v(105);
for (auto& log : logs) {
for (int i = log[0]; i < log[1]; i++) {
v[i - 1950]++;
}
}
return max_element(v.begin(), v.end()) - v.begin() + 1950;
}
};
不需额外空间:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
int maximumPopulation(vector<vector<int>>& logs) {
int ans = 0, cnt = 0;
for (int i = 1950; i <= 2050; i++) {
int t = 0;
for (auto& log : logs) {
if (i >= log[0] && i < log[1]) {
t++;
}
}
if (t > cnt) {
cnt = t;
ans = i;
}
}
return ans;
}
};
CATALOG
  1. 1. 5750. 人口最多的年份
    1. 1.0.1. 示例 1:
    2. 1.0.2. 示例 2:
    3. 1.0.3. 提示:
    4. 1.0.4. C++代码:
      1. 1.0.4.0.1. 额外空间:
      2. 1.0.4.0.2. 不需额外空间: