LeetCode 1658. Minimum Operations to Reduce X to Zero in F#
URL
leetcode.com/problems/minimum-operations-to..
Code
github.com/syohex/dotnet-study/blob/master/..
open System
let minOperations (nums: int []) (x: int) : int =
let rec minOperations' (nums: int []) left right sum total x ret =
if right >= nums.Length then
if ret = -1 then
-1
else
nums.Length - ret
else
let mutable sum' = sum + nums.[right]
let mutable left' = left
while left' < right && sum' > total - x do
sum' <- sum' - nums.[left']
left' <- left' + 1
if sum' = total - x then
let ret' = Math.Max(ret, right - left' + 1)
minOperations' nums left' (right + 1) sum' total x ret'
else
minOperations' nums left' (right + 1) sum' total x ret
let sum = Array.sum nums
minOperations' nums 0 0 0 sum x -1