aboutsummaryrefslogtreecommitdiff
path: root/leetcode/lc-1854-max-pop-year.rkt
blob: 75104f1fb9170602485de8180c446a99b6502384 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#lang racket
(define/contract (maximum-population logs)
  (-> (listof (listof exact-integer?)) exact-integer?)
  ; make a hash table of every year encountered between the birth and death years
  (define population (make-hash))
  ; for each person in the logs,
  (for/list ([person (in-list logs)])
    ; for every year from birth to the year before death,
    (for/list ([year (in-range (first person) (second person))])
      ; look up the year in the hash table and add 1 to its key,
      ; or add the key and set its value to 1 if it doesn't exist yet
      (hash-update! population year add1 1)))
  ; convert the hash table to a list,
  ; sort the list by year,
  ; find the first element that maximizes the count,
  ; and return the associated year
  (car (argmax cdr (sort (hash->list population) < #:key car))))