LeetCode 703. Kth Largest Element in a Stream in F#

URL

Kth Largest Element in a Stream - LeetCode

Code

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

type KthLargest =
    { nums: int list
      k: int }

    static member init (k: int) (nums: int list) : KthLargest =
        let nums' = List.sort nums |> List.rev |> List.take k
        { nums = nums'; k = k }

    static member add (num: int) (k: KthLargest) : (int * KthLargest) =
        let nums' = (num :: k.nums) |> List.sort |> List.rev |> List.take k.k
        List.last nums', { k with nums = nums' }