LeetCode 238. Product of Array Except Self in F#

URL

Product of Array Except Self - LeetCode

Code

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

let productExceptSelf (nums: int list) : int list =
    let leftAcc =
        nums
        |> List.fold
            (fun (acc, prev) num ->
                let p = num * prev
                p :: acc, p)
            ([ 1 ], 1)
        |> fst
        |> List.tail
        |> List.rev

    let rightAcc =
        nums
        |> List.rev
        |> List.fold
            (fun (acc, prev) num ->
                let p = num * prev
                p :: acc, p)
            ([ 1 ], 1)
        |> fst
        |> List.tail

    List.zip leftAcc rightAcc |> List.map (fun (a, b) -> a * b)