LeetCode 948. Bag of Tokens in F#

URL

leetcode.com/problems/bag-of-tokens

Code

github.com/syohex/dotnet-study/blob/master/..

let bagOfTokensScore (tokens: int list) (power: int) : int =
    let rec bagOfTokensScore' left right (tokens: int []) power score ret =
        if left > right then
            ret
        elif power >= tokens.[left] then
            let score' = score + 1
            bagOfTokensScore' (left + 1) right tokens (power - tokens.[left]) score' (System.Math.Max(ret, score + 1))
        elif score >= 1 then
            bagOfTokensScore' left (right - 1) tokens (power + tokens.[right]) (score - 1) ret
        else
            ret

    let tokens' = tokens |> List.sort |> List.toArray
    bagOfTokensScore' 0 (tokens'.Length - 1) tokens' power 0 0