LeetCode 2225. Find Players With Zero or One Losses in F#

URL

leetcode.com/problems/find-players-with-zer..

Code

github.com/syohex/dotnet-study/blob/master/..

let findWinners (matches: (int * int) list) : int list * int list =
    let losers =
        matches
        |> List.fold
            (fun acc (_, loser) ->
                match Map.tryFind loser acc with
                | None -> Map.add loser 1 acc
                | Some (v) -> Map.add loser (v + 1) acc)
            Map.empty

    let winners =
        matches
        |> List.fold
            (fun acc (winner, _) ->
                match Map.tryFind winner acc with
                | None -> Map.add winner 1 acc
                | Some (v) -> Map.add winner (v + 1) acc)
            Map.empty
        |> Map.filter (fun k _ -> Map.containsKey k losers |> not)
        |> Map.keys
        |> Seq.toList
        |> List.sort

    let losers' =
        losers
        |> Map.filter (fun _ v -> v = 1)
        |> Map.keys
        |> Seq.toList
        |> List.sort

    winners, losers'