mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-05 07:21:40 +08:00
update
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
<p>给你一个下标从 <strong>0</strong> 开始的数组 <code>nums</code> ,它包含 <strong>非负</strong> 整数,且全部为 <code>2</code> 的幂,同时给你一个整数 <code>target</code> 。</p>
|
||||
|
||||
<p>一次操作中,你必须对数组做以下修改:</p>
|
||||
|
||||
<ul>
|
||||
<li>选择数组中一个元素 <code>nums[i]</code> ,满足 <code>nums[i] > 1</code> 。</li>
|
||||
<li>将 <code>nums[i]</code> 从数组中删除。</li>
|
||||
<li>在 <code>nums</code> 的 <strong>末尾</strong> 添加 <strong>两个</strong> 数,值都为 <code>nums[i] / 2</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>你的目标是让 <code>nums</code> 的一个 <strong>子序列</strong> 的元素和等于 <code>target</code> ,请你返回达成这一目标的 <strong>最少操作次数</strong> 。如果无法得到这样的子序列,请你返回 <code>-1</code> 。</p>
|
||||
|
||||
<p>数组中一个 <strong>子序列</strong> 是通过删除原数组中一些元素,并且不改变剩余元素顺序得到的剩余数组。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong class="example">示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>nums = [1,2,8], target = 7
|
||||
<b>输出:</b>1
|
||||
<b>解释:</b>第一次操作中,我们选择元素 nums[2] 。数组变为 nums = [1,2,4,4] 。
|
||||
这时候,nums 包含子序列 [1,2,4] ,和为 7 。
|
||||
无法通过更少的操作得到和为 7 的子序列。
|
||||
</pre>
|
||||
|
||||
<p><strong class="example">示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>nums = [1,32,1,2], target = 12
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>第一次操作中,我们选择元素 nums[1] 。数组变为 nums = [1,1,2,16,16] 。
|
||||
第二次操作中,我们选择元素 nums[3] 。数组变为 nums = [1,1,2,16,8,8] 。
|
||||
这时候,nums 包含子序列 [1,1,2,8] ,和为 12 。
|
||||
无法通过更少的操作得到和为 12 的子序列。</pre>
|
||||
|
||||
<p><strong class="example">示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>nums = [1,32,1], target = 35
|
||||
<b>输出:</b>-1
|
||||
<b>解释:</b>无法得到和为 35 的子序列。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 1000</code></li>
|
||||
<li><code>1 <= nums[i] <= 2<sup>30</sup></code></li>
|
||||
<li><code>nums</code> 只包含非负整数,且均为 2 的幂。</li>
|
||||
<li><code>1 <= target < 2<sup>31</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,127 @@
|
||||
<p>给你一个长度为 <code>n</code> 下标从 <strong>0</strong> 开始的整数数组 <code>receiver</code> 和一个整数 <code>k</code> 。</p>
|
||||
|
||||
<p>总共有 <code>n</code> 名玩家,玩家 <strong>编号</strong> 互不相同,且为 <code>[0, n - 1]</code> 中的整数。这些玩家玩一个传球游戏,<code>receiver[i]</code> 表示编号为 <code>i</code> 的玩家会传球给编号为 <code>receiver[i]</code> 的玩家。玩家可以传球给自己,也就是说 <code>receiver[i]</code> 可能等于 <code>i</code> 。</p>
|
||||
|
||||
<p>你需要从 <code>n</code> 名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传 <strong>恰好</strong> <code>k</code> 次。</p>
|
||||
|
||||
<p>如果选择编号为 <code>x</code> 的玩家作为开始玩家,定义函数 <code>f(x)</code> 表示从编号为 <code>x</code> 的玩家开始,<code>k</code> 次传球内所有接触过球玩家的编号之 <strong>和</strong> ,如果有玩家多次触球,则 <strong>累加多次</strong> 。换句话说, <code>f(x) = x + receiver[x] + receiver[receiver[x]] + ... + receiver<sup>(k)</sup>[x]</code> 。</p>
|
||||
|
||||
<p>你的任务时选择开始玩家 <code>x</code> ,目的是<strong> 最大化</strong> <code>f(x)</code> 。</p>
|
||||
|
||||
<p>请你返回函数的 <strong>最大值</strong> 。</p>
|
||||
|
||||
<p><strong>注意:</strong><code>receiver</code> 可能含有重复元素。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong class="example">示例 1:</strong></p>
|
||||
|
||||
<table border="1" cellspacing="3" style="border-collapse: separate; text-align: center;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="padding: 5px; border: 1px solid black;">传递次数</th>
|
||||
<th style="padding: 5px; border: 1px solid black;">传球者编号</th>
|
||||
<th style="padding: 5px; border: 1px solid black;">接球者编号</th>
|
||||
<th style="padding: 5px; border: 1px solid black;">x + 所有接球者编号</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;"> </td>
|
||||
<td style="padding: 5px; border: 1px solid black;"> </td>
|
||||
<td style="padding: 5px; border: 1px solid black;"> </td>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">1</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">1</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">1</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">0</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">3</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">0</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">4</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">1</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">6</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>receiver = [2,0,1], k = 4
|
||||
<b>输出:</b>6
|
||||
<b>解释:</b>上表展示了从编号为 x = 2 开始的游戏过程。
|
||||
从表中可知,f(2) 等于 6 。
|
||||
6 是能得到最大的函数值。
|
||||
所以输出为 6 。
|
||||
</pre>
|
||||
|
||||
<p><strong class="example">示例 2:</strong></p>
|
||||
|
||||
<table border="1" cellspacing="3" style="border-collapse: separate; text-align: center;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="padding: 5px; border: 1px solid black;">传递次数</th>
|
||||
<th style="padding: 5px; border: 1px solid black;">传球者编号</th>
|
||||
<th style="padding: 5px; border: 1px solid black;">接球者编号</th>
|
||||
<th style="padding: 5px; border: 1px solid black;">x + 所有接球者编号</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;"> </td>
|
||||
<td style="padding: 5px; border: 1px solid black;"> </td>
|
||||
<td style="padding: 5px; border: 1px solid black;"> </td>
|
||||
<td style="padding: 5px; border: 1px solid black;">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">1</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">4</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">3</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">3</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 5px; border: 1px solid black;">3</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">2</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">1</td>
|
||||
<td style="padding: 5px; border: 1px solid black;">10</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>receiver = [1,1,1,2,3], k = 3
|
||||
<b>输出:</b>10
|
||||
<b>解释:</b>上表展示了从编号为 x = 4 开始的游戏过程。
|
||||
从表中可知,f(4) 等于 10 。
|
||||
10 是能得到最大的函数值。
|
||||
所以输出为 10 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= receiver.length == n <= 10<sup>5</sup></code></li>
|
||||
<li><code>0 <= receiver[i] <= n - 1</code></li>
|
||||
<li><code>1 <= k <= 10<sup>10</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,53 @@
|
||||
<p>给你两个正整数:<code>n</code> 和 <code>target</code> 。</p>
|
||||
|
||||
<p>如果数组 <code>nums</code> 满足下述条件,则称其为 <strong>美丽数组</strong> 。</p>
|
||||
|
||||
<ul>
|
||||
<li><code>nums.length == n</code>.</li>
|
||||
<li><code>nums</code> 由两两互不相同的正整数组成。</li>
|
||||
<li>在范围 <code>[0, n-1]</code> 内,<strong>不存在 </strong>两个 <strong>不同</strong> 下标 <code>i</code> 和 <code>j</code> ,使得 <code>nums[i] + nums[j] == target</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>返回符合条件的美丽数组所可能具备的 <strong>最小</strong> 和。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>n = 2, target = 3
|
||||
<strong>输出:</strong>4
|
||||
<strong>解释:</strong>nums = [1,3] 是美丽数组。
|
||||
- nums 的长度为 n = 2 。
|
||||
- nums 由两两互不相同的正整数组成。
|
||||
- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。
|
||||
可以证明 4 是符合条件的美丽数组所可能具备的最小和。</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>n = 3, target = 3
|
||||
<strong>输出:</strong>8
|
||||
<strong>解释:</strong>
|
||||
nums = [1,3,4] 是美丽数组。
|
||||
- nums 的长度为 n = 3 。
|
||||
- nums 由两两互不相同的正整数组成。
|
||||
- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。
|
||||
可以证明 8 是符合条件的美丽数组所可能具备的最小和。</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>n = 1, target = 1
|
||||
<strong>输出:</strong>1
|
||||
<strong>解释:</strong>nums = [1] 是美丽数组。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= target <= 10<sup>5</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,45 @@
|
||||
<p>给你一个长度为 <code>n</code> 的字符串 <code>moves</code> ,该字符串仅由字符 <code>'L'</code>、<code>'R'</code> 和 <code>'_'</code> 组成。字符串表示你在一条原点为 <code>0</code> 的数轴上的若干次移动。</p>
|
||||
|
||||
<p>你的初始位置就在原点(<code>0</code>),第 <code>i</code> 次移动过程中,你可以根据对应字符选择移动方向:</p>
|
||||
|
||||
<ul>
|
||||
<li>如果 <code>moves[i] = 'L'</code> 或 <code>moves[i] = '_'</code> ,可以选择向左移动一个单位距离</li>
|
||||
<li>如果 <code>moves[i] = 'R'</code> 或 <code>moves[i] = '_'</code> ,可以选择向右移动一个单位距离</li>
|
||||
</ul>
|
||||
|
||||
<p>移动 <code>n</code> 次之后,请你找出可以到达的距离原点 <strong>最远</strong> 的点,并返回 <strong>从原点到这一点的距离</strong> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>moves = "L_RL__R"
|
||||
<strong>输出:</strong>3
|
||||
<strong>解释:</strong>可以到达的距离原点 0 最远的点是 -3 ,移动的序列为 "LLRLLLR" 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>moves = "_R__LL_"
|
||||
<strong>输出:</strong>5
|
||||
<strong>解释:</strong>可以到达的距离原点 0 最远的点是 -5 ,移动的序列为 "LRLLLLL" 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>moves = "_______"
|
||||
<strong>输出:</strong>7
|
||||
<strong>解释:</strong>可以到达的距离原点 0 最远的点是 7 ,移动的序列为 "RRRRRRR" 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= moves.length == n <= 50</code></li>
|
||||
<li><code>moves</code> 仅由字符 <code>'L'</code>、<code>'R'</code> 和 <code>'_'</code> 组成</li>
|
||||
</ul>
|
Reference in New Issue
Block a user