1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/石子游戏 VIII [stone-game-viii].html
2022-03-29 12:43:11 +08:00

56 lines
2.6 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>Alice 和 Bob 玩一个游戏,两人轮流操作, <strong>Alice 先手</strong> 。</p>
<p>总共有 <code>n</code> 个石子排成一行。轮到某个玩家的回合时,如果石子的数目 <strong>大于 1</strong> ,他将执行以下操作:</p>
<ol>
<li>选择一个整数 <code>x &gt; 1</code> ,并且 <strong>移除</strong> 最左边的 <code>x</code> 个石子。</li>
<li><strong> 移除</strong> 的石子价值之 <strong></strong> 累加到该玩家的分数中。</li>
<li>将一个 <strong>新的石子</strong> 放在最左边,且新石子的值为被移除石子值之和。</li>
</ol>
<p>当只剩下 <strong>一个</strong> 石子时,游戏结束。</p>
<p>Alice 和 Bob 的 <strong>分数之差</strong> 为 <code>(Alice 的分数 - Bob 的分数)</code>  Alice 的目标是<strong> 最大化</strong> 分数差Bob 的目标是 <strong>最小化</strong> 分数差。</p>
<p>给你一个长度为 <code>n</code> 的整数数组 <code>stones</code> ,其中 <code>stones[i]</code> 是 <strong>从左边起</strong> 第 <code>i</code> 个石子的价值。请你返回在双方都采用 <strong>最优</strong> 策略的情况下Alice 和 Bob 的 <strong>分数之差</strong></p>
<p> </p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>stones = [-1,2,-3,4,-5]
<b>输出:</b>5
<strong>解释:</strong>
- Alice 移除最左边的 4 个石子,得分增加 (-1) + 2 + (-3) + 4 = 2 ,并且将一个价值为 2 的石子放在最左边。stones = [2,-5] 。
- Bob 移除最左边的 2 个石子,得分增加 2 + (-5) = -3 ,并且将一个价值为 -3 的石子放在最左边。stones = [-3] 。
两者分数之差为 2 - (-3) = 5 。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>stones = [7,-6,5,10,5,-2,-6]
<b>输出:</b>13
<b>解释:</b>
- Alice 移除所有石子,得分增加 7 + (-6) + 5 + 10 + 5 + (-2) + (-6) = 13 ,并且将一个价值为 13 的石子放在最左边。stones = [13] 。
两者分数之差为 13 - 0 = 13 。
</pre>
<p><strong>示例 3</strong></p>
<pre><b>输入:</b>stones = [-10,-12]
<b>输出:</b>-22
<strong>解释:</strong>
- Alice 只有一种操作,就是移除所有石子。得分增加 (-10) + (-12) = -22 ,并且将一个价值为 -22 的石子放在最左边。stones = [-22] 。
两者分数之差为 (-22) - 0 = -22 。
</pre>
<p> </p>
<p><strong>提示:</strong></p>
<ul>
<li><code>n == stones.length</code></li>
<li><code>2 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>-10<sup>4</sup> &lt;= stones[i] &lt;= 10<sup>4</sup></code></li>
</ul>