1854. Maximum Population Year

You are given a 2D integer array logs where each logs[i] = [birthi, deathi] indicates the birth and death years of the ith person.

The population of some year x is the number of people alive during that year. The ith 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

Rust Solution

struct Solution;

impl Solution {
    fn maximum_population(logs: Vec<Vec<i32>>) -> i32 {
        let mut start = std::i32::MAX;
        let mut end = 0;
        for log in &logs {
            let birth = log[0];
            let death = log[1];
            start = start.min(birth);
            end = end.max(death);
        }
        let mut res = 0;
        let mut max = 0;
        for i in start..end {
            let mut population = 0;
            for log in &logs {
                let birth = log[0];
                let death = log[1];
                if (birth..death).contains(&i) {
                    population += 1;
                }
            }
            if max < population {
                res = i;
                max = population;
            }
        }
        res
    }
}

#[test]
fn test() {
    let logs = vec_vec_i32![[1993, 1999], [2000, 2010]];
    let res = 1993;
    assert_eq!(Solution::maximum_population(logs), res);
    let logs = vec_vec_i32![[1950, 1961], [1960, 1971], [1970, 1981]];
    let res = 1960;
    assert_eq!(Solution::maximum_population(logs), res);
}

Having problems with this solution? Click here to submit an issue on github.