LeetCode 2090. K Radius Subarray Averages in F#
URL
K Radius Subarray Averages - LeetCode
Code
https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/2090/main.fsx
let getAverage (nums: int[]) (k: int) : int[] =
let len = Array.length nums
let windowSize = 2 * k + 1
if windowSize > len then
Array.init len (fun _ -> -1)
else
let sum = Array.take windowSize nums |> Array.sum |> int64
let windowSize' = int64 windowSize
let ret = Array.init len (fun _ -> -1)
ret.[windowSize - k - 1] <- (sum / windowSize') |> int
seq { windowSize .. (len - 1) }
|> Seq.fold
(fun sum i ->
let sum' = sum + (int64 nums.[i]) - (int64 nums.[i - windowSize])
ret.[i - k] <- (sum' / windowSize') |> int
sum')
sum
|> ignore
ret