LeetCode 823. Binary Trees With Factors in F#
URL
leetcode.com/problems/binary-trees-with-fac..
Code
github.com/syohex/dotnet-study/blob/master/..
let numFactoredBinaryTrees (arr: int []) : int =
let arr' = arr |> Array.sort
let h =
arr'
|> Array.mapi (fun i n -> i, n)
|> Array.fold (fun acc (i, n) -> Map.add n i acc) Map.empty
let dp = Array.init arr'.Length (fun _ -> 1L)
let MOD = 1_000_000_007L
for i in 1 .. (arr'.Length - 1) do
for j in 0 .. (i - 1) do
if arr'.[i] % arr'.[j] = 0 then
match Map.tryFind (arr'.[i] / arr'.[j]) h with
| Some (v) -> dp.[i] <- (dp.[i] + (dp.[j] * dp.[v])) % MOD
| None -> ()
dp
|> Array.fold (fun acc n -> (acc + n) % MOD) 0L
|> int