LeetCode 442. Find All Duplicates in an Array in F#
URL
Find All Duplicates in an Array - LeetCode
Code
https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202403/main.fsx
let findDuplicates (nums: int[]) : int list =
let rec findDuplicates' i (nums: int[]) acc =
if i >= nums.Length then
List.rev acc
else
let idx = System.Math.Abs(nums.[i]) - 1
if nums.[idx] >= 0 then
let acc' = (idx + 1) :: acc
nums.[idx] <- nums.[idx] * -1
findDuplicates' (i + 1) nums acc'
else
findDuplicates' (i + 1) nums acc
Array.iter
(fun (num: int) ->
let idx = System.Math.Abs(num) - 1
nums.[idx] <- nums.[idx] * -1)
nums
findDuplicates' 0 nums []