LeetCode 1218. Longest Arithmetic Subsequence of Given Difference in F#

URL

Longest Arithmetic Subsequence of Given Difference - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/1218/main.fsx

open System

let longestSubsequence (arr: int list) (difference: int) : int =
    arr
    |> List.fold
        (fun (m, ret) n ->
            match Map.tryFind (n - difference) m with
            | Some(v) -> Map.add n (v + 1) m, Math.Max(ret, v + 1)
            | None -> Map.add n 1 m, ret)
        (Map.empty, 1)
    |> snd