|
10 | 10 |
|
11 | 11 | <p>给你一个下标从 <strong>0</strong> 开始的二进制数组 <code>nums</code>,其长度为 <code>n</code> ;另给你一个 <strong>正整数 </strong><code>k</code> 以及一个 <strong>非负整数 </strong><code>maxChanges</code> 。</p>
|
12 | 12 |
|
13 |
| -<p>灵茶山艾府在玩一个游戏,游戏的目标是让灵茶山艾府使用 <strong>最少 </strong>数量的 <strong>行动 </strong>次数从 <code>nums</code> 中拾起 <code>k</code> 个 1 。游戏开始时,灵茶山艾府可以选择数组 <code>[0, n - 1]</code> 范围内的任何索引<code>index</code> 站立。如果 <code>nums[index] == 1</code> ,灵茶山艾府就会拾起一个 1 ,并且 <code>nums[index]</code> 变成<code>0</code>(这<strong> 不算 </strong>作一次行动)。之后,灵茶山艾府可以执行 <strong>任意数量</strong> 的 <strong>行动</strong>(<strong>包括</strong><strong>零次</strong>),在每次行动中灵茶山艾府必须 <strong>恰好 </strong>执行以下动作之一:</p> |
| 13 | +<p>Alice 在玩一个游戏,游戏的目标是让 Alice 使用 <strong>最少 </strong>数量的 <strong>行动 </strong>次数从 <code>nums</code> 中拾起 <code>k</code> 个 1 。游戏开始时,Alice 可以选择数组 <code>[0, n - 1]</code> 范围内的任何索引 <code>aliceIndex</code> 站立。如果 <code>nums[aliceIndex] == 1</code> ,Alice 会拾起一个 1 ,并且 <code>nums[aliceIndex]</code> 变成<code>0</code>(这<strong> 不算 </strong>作一次行动)。之后,Alice 可以执行 <strong>任意数量</strong> 的 <strong>行动</strong>(<strong>包括</strong><strong>零次</strong>),在每次行动中 Alice 必须 <strong>恰好 </strong>执行以下动作之一:</p> |
14 | 14 |
|
15 | 15 | <ul>
|
16 |
| - <li>选择任意一个下标 <code>j != index</code> 且满足 <code>nums[j] == 0</code> ,然后将 <code>nums[j]</code> 设置为 <code>1</code> 。这个动作最多可以执行 <code>maxChanges</code> 次。</li> |
17 |
| - <li>选择任意两个相邻的下标 <code>x</code> 和 <code>y</code>(<code>|x - y| == 1</code>)且满足 <code>nums[x] == 1</code>, <code>nums[y] == 0</code> ,然后交换它们的值(将 <code>nums[y] = 1</code> 和 <code>nums[x] = 0</code>)。如果 <code>y == index</code>,在这次行动后灵茶山艾府拾起一个 1 ,并且 <code>nums[y]</code> 变成 <code>0</code> 。</li> |
| 16 | + <li>选择任意一个下标 <code>j != aliceIndex</code> 且满足 <code>nums[j] == 0</code> ,然后将 <code>nums[j]</code> 设置为 <code>1</code> 。这个动作最多可以执行 <code>maxChanges</code> 次。</li> |
| 17 | + <li>选择任意两个相邻的下标 <code>x</code> 和 <code>y</code>(<code>|x - y| == 1</code>)且满足 <code>nums[x] == 1</code>, <code>nums[y] == 0</code> ,然后交换它们的值(将 <code>nums[y] = 1</code> 和 <code>nums[x] = 0</code>)。如果 <code>y == aliceIndex</code>,在这次行动后 Alice 拾起一个 1 ,并且 <code>nums[y]</code> 变成 <code>0</code> 。</li> |
18 | 18 | </ul>
|
19 | 19 |
|
20 |
| -<p>返回灵茶山艾府拾起 <strong>恰好 </strong><code>k</code> 个 1 所需的 <strong>最少 </strong>行动次数。</p> |
| 20 | +<p>返回 Alice 拾起 <strong>恰好 </strong><code>k</code> 个 1 所需的 <strong>最少 </strong>行动次数。</p> |
21 | 21 |
|
22 | 22 | <p> </p>
|
23 | 23 |
|
|
28 | 28 |
|
29 | 29 | <p><strong>输出:</strong><span class="example-io" style="font-family: Menlo,sans-serif; font-size: 0.85rem;">3</span></p>
|
30 | 30 |
|
31 |
| -<p><strong>解释:</strong>如果游戏开始时灵茶山艾府在 <code>index == 1</code> 的位置上,按照以下步骤执行每个动作,他可以利用 <code>3</code> 次行动拾取 <code>3</code> 个 1 :</p> |
| 31 | +<p><strong>解释:</strong>如果游戏开始时 Alice 在 <code>aliceIndex == 1</code> 的位置上,按照以下步骤执行每个动作,他可以利用 <code>3</code> 次行动拾取 <code>3</code> 个 1 :</p> |
32 | 32 |
|
33 | 33 | <ul>
|
34 |
| - <li>游戏开始时灵茶山艾府拾取了一个 1 ,<code>nums[1]</code> 变成了 <code>0</code>。此时 <code>nums</code> 变为 <code>[1,<strong><u>0</u></strong>,0,0,0,1,1,0,0,1]</code> 。</li> |
| 34 | + <li>游戏开始时 Alice 拾取了一个 1 ,<code>nums[1]</code> 变成了 <code>0</code>。此时 <code>nums</code> 变为 <code>[1,<strong><u>1</u></strong>,1,0,0,1,1,0,0,1]</code> 。</li> |
35 | 35 | <li>选择 <code>j == 2</code> 并执行第一种类型的动作。<code>nums</code> 变为 <code>[1,<strong><u>0</u></strong>,1,0,0,1,1,0,0,1]</code></li>
|
36 |
| - <li>选择 <code>x == 2</code> 和 <code>y == 1</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[1,<strong><u>1</u></strong>,0,0,0,1,1,0,0,1]</code> 。由于 <code>y == index</code>,灵茶山艾府拾取了一个 1 ,<code>nums</code> 变为 <code>[1,<strong><u>0</u></strong>,0,0,0,1,1,0,0,1]</code> 。</li> |
37 |
| - <li>选择 <code>x == 0</code> 和 <code>y == 1</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[0,<strong><u>1</u></strong>,0,0,0,1,1,0,0,1]</code> 。由于 <code>y == index</code>,灵茶山艾府拾取了一个 1 ,<code>nums</code> 变为 <code>[0,<strong><u>0</u></strong>,0,0,0,1,1,0,0,1]</code> 。</li> |
| 36 | + <li>选择 <code>x == 2</code> 和 <code>y == 1</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[1,<strong><u>1</u></strong>,0,0,0,1,1,0,0,1]</code> 。由于 <code>y == aliceIndex</code>,Alice 拾取了一个 1 ,<code>nums</code> 变为 <code>[1,<strong><u>0</u></strong>,0,0,0,1,1,0,0,1]</code> 。</li> |
| 37 | + <li>选择 <code>x == 0</code> 和 <code>y == 1</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[0,<strong><u>1</u></strong>,0,0,0,1,1,0,0,1]</code> 。由于 <code>y == aliceIndex</code>,Alice 拾取了一个 1 ,<code>nums</code> 变为 <code>[0,<strong><u>0</u></strong>,0,0,0,1,1,0,0,1]</code> 。</li> |
38 | 38 | </ul>
|
39 | 39 |
|
40 |
| -<p>请注意,灵茶山艾府也可能执行其他的 <code>3</code> 次行动序列达成拾取 <code>3</code> 个 1 。</p> |
| 40 | +<p>请注意,Alice 也可能执行其他的 <code>3</code> 次行动序列达成拾取 <code>3</code> 个 1 。</p> |
41 | 41 | </div>
|
42 | 42 |
|
43 | 43 | <p><strong class="example">示例 2:</strong></p>
|
|
47 | 47 |
|
48 | 48 | <p><strong>输出:</strong><span class="example-io" style="font-family: Menlo,sans-serif; font-size: 0.85rem;">4</span></p>
|
49 | 49 |
|
50 |
| -<p><strong>解释:</strong>如果游戏开始时灵茶山艾府在 <code>index == 0</code> 的位置上,按照以下步骤执行每个动作,他可以利用 <code>4</code> 次行动拾取 <code>2</code> 个 1 :</p> |
| 50 | +<p><strong>解释:</strong>如果游戏开始时 Alice 在 <code>aliceIndex == 0</code> 的位置上,按照以下步骤执行每个动作,他可以利用 <code>4</code> 次行动拾取 <code>2</code> 个 1 :</p> |
51 | 51 |
|
52 | 52 | <ul>
|
53 | 53 | <li>选择 <code>j == 1</code> 并执行第一种类型的动作。<code>nums</code> 变为 <code>[<strong><u>0</u></strong>,1,0,0]</code> 。</li>
|
54 |
| - <li>选择 <code>x == 1</code> 和 <code>y == 0</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[<strong><u>1</u></strong>,0,0,0]</code> 。由于 <code>y == index</code>,灵茶山艾府拾起了一个 1 ,<code>nums</code> 变为 <code>[<strong><u>0</u></strong>,0,0,0]</code> 。</li> |
| 54 | + <li>选择 <code>x == 1</code> 和 <code>y == 0</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[<strong><u>1</u></strong>,0,0,0]</code> 。由于 <code>y == aliceIndex</code>,Alice 拾起了一个 1 ,<code>nums</code> 变为 <code>[<strong><u>0</u></strong>,0,0,0]</code> 。</li> |
55 | 55 | <li>再次选择 <code>j == 1</code> 并执行第一种类型的动作。<code>nums</code> 变为 <code>[<strong><u>0</u></strong>,1,0,0]</code> 。</li>
|
56 |
| - <li>再次选择 <code>x == 1</code> 和 <code>y == 0</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[<strong><u>1</u></strong>,0,0,0]</code> 。由于<code>y == index</code>,灵茶山艾府拾起了一个 1 ,<code>nums</code> 变为 <code>[<strong><u>0</u></strong>,0,0,0]</code> 。</li> |
| 56 | + <li>再次选择 <code>x == 1</code> 和 <code>y == 0</code> ,并执行第二种类型的动作。<code>nums</code> 变为 <code>[<strong><u>1</u></strong>,0,0,0]</code> 。由于<code>y == aliceIndex</code>,Alice 拾起了一个 1 ,<code>nums</code> 变为 <code>[<strong><u>0</u></strong>,0,0,0]</code> 。</li> |
57 | 57 | </ul>
|
58 | 58 | </div>
|
59 | 59 |
|
|
0 commit comments