LeetCode 2610. Convert an Array Into a 2D Array With Conditions in F#

URL

https://leetcode.com/problems/convert-an-array-into-a-2d-array-with-conditions/description/?envType=daily-question&envId=2024-01-02

Code

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

let findMatrix (nums: int list) : int list list =
    let len = List.length nums

    let rec findMatrix' nums visited acc =
        if Set.count visited >= len then
            acc
        else
            let s, visited' =
                nums
                |> List.fold
                    (fun (s, visited) (i, n) ->
                        if Set.contains i visited || Set.contains n s then
                            s, visited
                        else
                            Set.add n s, Set.add i visited)
                    (Set.empty, visited)

            findMatrix' nums visited' ((Set.toList s) :: acc)

    findMatrix' (List.indexed nums) Set.empty []