LeetCode 977. Squares of a Sorted Array in F#

URL

https://leetcode.com/problems/squares-of-a-sorted-array/description/?envType=daily-question&envId=2024-03-02

Code

https://leetcode.com/problems/squares-of-a-sorted-array/description/?envType=daily-question&envId=2024-03-02

open System

let sortedSquare (nums: int[]) : int[] =
    let rec sortedSquare' i (nums: int[]) left right (ret: int[]) =
        if i < 0 then
            ret
        else if Math.Abs(nums.[left]) < Math.Abs(nums.[right]) then
            ret.[i] <- nums.[right] * nums.[right]
            sortedSquare' (i - 1) nums left (right - 1) ret
        else
            ret.[i] <- nums.[left] * nums.[left]
            sortedSquare' (i - 1) nums (left + 1) right ret

    let right = nums.Length - 1
    sortedSquare' right nums 0 right (Array.zeroCreate nums.Length)