LeetCode 3075. Maximize Happiness of Selected Children in F#

URL

Maximize Happiness of Selected Children - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202405/maximize_happiness_of_selected_children/main.fsx

let maximumHappinessSum (happiness: int list) (k: int) : int64 =
    let rec maximumHappinessSum' (happiness: int64 list) k diff ret =
        match happiness with
        | [] -> ret
        | h :: t ->
            let v = h - diff

            if v <= 0 || k <= 0 then
                ret
            else
                maximumHappinessSum' t (k - 1) (diff + 1L) (ret + v)

    let happiness' = happiness |> List.sort |> List.rev |> List.map int64
    maximumHappinessSum' happiness' k 0L 0L