1
var stoneGameIII = function (stoneValue) {2
let len = stoneValue.length - 1;3
let bestMoves = [0, 0, 0];4
bestMoves[len % 3] = stoneValue[len];5
for (let i = len - 1; i >= 0; i--) {6
let turn = stoneValue[i];7
let option1 = turn - bestMoves[(i + 1) % 3];8
turn += stoneValue[i + 1] || 0;9
let option2 = turn - bestMoves[(i + 2) % 3];10
turn += stoneValue[i + 2] || 0;11
let option3 = turn - bestMoves[i % 3];12
let best = Math.max(option1, option2, option3);13
bestMoves[i % 3] = best;15
return bestMoves[0] > 0 ? "Alice" : bestMoves[0] !== 0 ? "Bob" : "Tie";