LeetCode 523. Continuous Subarray Sum in F#

URL

leetcode.com/problems/continuous-subarray-sum

Code

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

let checkSubarrayNum (nums: int list) (k: int) : bool =
    let rec checkSubarrayNum' nums i sum k m =
        match nums with
        | [] -> false
        | h :: t ->
            let sum' = h + sum
            let modulo = sum' % k

            match Map.tryFind modulo m with
            | Some (j) ->
                if j < i then
                    true
                else
                    checkSubarrayNum' t (i + 1) sum' k m
            | None -> checkSubarrayNum' t (i + 1) sum' k (Map.add modulo (i + 1) m)

    checkSubarrayNum' nums 0 0 k (Map.add 0 0 Map.empty)