class Solution {
public:
int maximumPopulation(vector<vector<int>>& logs) {
}
};
1854. 人口最多的年份
给你一个二维整数数组 logs
,其中每个 logs[i] = [birthi, deathi]
表示第 i
个人的出生和死亡年份。
年份 x
的 人口 定义为这一年期间活着的人的数目。第 i
个人被计入年份 x
的人口需要满足:x
在闭区间 [birthi, deathi - 1]
内。注意,人不应当计入他们死亡当年的人口中。
返回 人口最多 且 最早 的年份。
示例 1:
输入:logs = [[1993,1999],[2000,2010]] 输出:1993 解释:人口最多为 1 ,而 1993 是人口为 1 的最早年份。
示例 2:
输入:logs = [[1950,1961],[1960,1971],[1970,1981]] 输出:1960 解释: 人口最多为 2 ,分别出现在 1960 和 1970 。 其中最早年份是 1960 。
提示:
1 <= logs.length <= 100
1950 <= birthi < deathi <= 2050
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 2.6 MB, 提交时间: 2021-06-04 15:43:00
func maximumPopulation(logs [][]int) int { offset := 1950 growth := make([]int, 2050-offset+1) for _, v := range logs { growth[v[0]-offset]++ growth[v[1]-offset]-- } fmt.Println(growth) sum, max, maxYear := 0, 0, 0 for i, v := range growth { sum += v if sum > max { max = sum maxYear = i } } return maxYear + offset }
golang 解法, 执行用时: 4 ms, 内存消耗: 2.8 MB, 提交时间: 2021-06-04 15:38:05
func maximumPopulation(logs [][]int) int { ans, p := 2050, 0 mp := map[int]int{} for _, log := range logs { for j := log[0]; j < log[1]; j++ { mp[j]++ } } for k, v := range mp { if v > p { p = v ans = k } if v == p && ans > k { ans = k } } return ans }