1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-05 23:41:41 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
This commit is contained in:
2024-06-25 01:21:44 +08:00
parent f55b93a706
commit b545ef1222
70 changed files with 16141 additions and 8975 deletions

View File

@@ -0,0 +1,95 @@
<p>给你两个整数 <code>n</code><code>k</code></p>
<p>最初,你有一个长度为 <code>n</code> 的整数数组 <code>a</code>,对所有 <code>0 &lt;= i &lt;= n - 1</code>,都有 <code>a[i] = 1</code> 。每过一秒,你会同时更新每个元素为其前面所有元素的和加上该元素本身。例如,一秒后,<code>a[0]</code> 保持不变,<code>a[1]</code> 变为 <code>a[0] + a[1]</code><code>a[2]</code> 变为 <code>a[0] + a[1] + a[2]</code>,以此类推。</p>
<p>返回 <code>k</code> 秒后 <code>a[n - 1]</code><strong></strong></p>
<p>由于答案可能非常大,返回其对 <code>10<sup>9</sup> + 7</code> <strong>取余 </strong>后的结果。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">n = 4, k = 5</span></p>
<p><strong>输出:</strong><span class="example-io">56</span></p>
<p><strong>解释:</strong></p>
<table border="1">
<tbody>
<tr>
<th>时间(秒)</th>
<th>数组状态</th>
</tr>
<tr>
<td>0</td>
<td>[1,1,1,1]</td>
</tr>
<tr>
<td>1</td>
<td>[1,2,3,4]</td>
</tr>
<tr>
<td>2</td>
<td>[1,3,6,10]</td>
</tr>
<tr>
<td>3</td>
<td>[1,4,10,20]</td>
</tr>
<tr>
<td>4</td>
<td>[1,5,15,35]</td>
</tr>
<tr>
<td>5</td>
<td>[1,6,21,56]</td>
</tr>
</tbody>
</table>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">n = 5, k = 3</span></p>
<p><strong>输出:</strong><span class="example-io">35</span></p>
<p><strong>解释:</strong></p>
<table border="1">
<tbody>
<tr>
<th>时间(秒)</th>
<th>数组状态</th>
</tr>
<tr>
<td>0</td>
<td>[1,1,1,1,1]</td>
</tr>
<tr>
<td>1</td>
<td>[1,2,3,4,5]</td>
</tr>
<tr>
<td>2</td>
<td>[1,3,6,10,15]</td>
</tr>
<tr>
<td>3</td>
<td>[1,4,10,20,35]</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n, k &lt;= 1000</code></li>
</ul>

View File

@@ -0,0 +1,50 @@
<p>给你一个二进制数组&nbsp;<code>nums</code>&nbsp;</p>
<p>你可以对数组执行以下操作 <strong>任意</strong>&nbsp;次(也可以 0 次):</p>
<ul>
<li>选择数组中 <strong>任意连续</strong>&nbsp;3 个元素,并将它们 <strong>全部反转</strong>&nbsp;</li>
</ul>
<p><strong>反转</strong>&nbsp;一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。</p>
<p>请你返回将 <code>nums</code>&nbsp;中所有元素变为 1 的 <strong>最少</strong>&nbsp;操作次数。如果无法全部变成 1 ,返回 -1 。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [0,1,1,1,0,0]</span></p>
<p><span class="example-io"><b>输出:</b>3</span></p>
<p><strong>解释:</strong><br />
我们可以执行以下操作:</p>
<ul>
<li>选择下标为 0 1 和 2 的元素并反转,得到&nbsp;<code>nums = [<u><strong>1</strong></u>,<u><strong>0</strong></u>,<u><strong>0</strong></u>,1,0,0]</code>&nbsp;</li>
<li>选择下标为 1 2 和 3 的元素并反转,得到&nbsp;<code>nums = [1,<u><strong>1</strong></u>,<u><strong>1</strong></u>,<strong><u>0</u></strong>,0,0]</code>&nbsp;</li>
<li>选择下标为 3 4 和 5 的元素并反转,得到&nbsp;<code>nums = [1,1,1,<strong><u>1</u></strong>,<u><strong>1</strong></u>,<u><strong>1</strong></u>]</code>&nbsp;</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [0,1,1,1]</span></p>
<p><span class="example-io"><b>输出:</b>-1</span></p>
<p><strong>解释:</strong><br />
无法将所有元素都变为 1 。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>3 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>0 &lt;= nums[i] &lt;= 1</code></li>
</ul>

View File

@@ -0,0 +1,55 @@
<p>给你一个二进制数组&nbsp;<code>nums</code>&nbsp;</p>
<p>你可以对数组执行以下操作&nbsp;<strong>任意</strong>&nbsp;次(也可以 0 次):</p>
<ul>
<li>选择数组中 <strong>任意</strong>&nbsp;一个下标 <code>i</code>&nbsp;,并将从下标 <code>i</code>&nbsp;开始一直到数组末尾 <strong>所有</strong>&nbsp;元素 <strong>反转</strong>&nbsp;</li>
</ul>
<p><b>反转</b>&nbsp;一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。</p>
<p>请你返回将 <code>nums</code>&nbsp;中所有元素变为 1 的 <strong>最少</strong>&nbsp;操作次数。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [0,1,1,0,1]</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong><br />
我们可以执行以下操作:</p>
<ul>
<li>选择下标&nbsp;<code>i = 1</code>&nbsp;执行操作,得到<span class="example-io">&nbsp;<code>nums = [0,<u><strong>0</strong></u>,<u><strong>0</strong></u>,<u><strong>1</strong></u>,<u><strong>0</strong></u>]</code>&nbsp;</span></li>
<li>选择下标&nbsp;<code>i = 0</code>&nbsp;执行操作,得到<span class="example-io">&nbsp;<code>nums = [<u><strong>1</strong></u>,<u><strong>1</strong></u>,<u><strong>1</strong></u>,<u><strong>0</strong></u>,<u><strong>1</strong></u>]</code>&nbsp;</span></li>
<li>选择下标&nbsp;<code>i = 4</code>&nbsp;执行操作,得到<span class="example-io">&nbsp;<code>nums = [1,1,1,0,<u><strong>0</strong></u>]</code>&nbsp;</span></li>
<li>选择下标&nbsp;<code>i = 3</code>&nbsp;执行操作,得到<span class="example-io">&nbsp;<code>nums = [1,1,1,<u><strong>1</strong></u>,<u><strong>1</strong></u>]</code>&nbsp;</span></li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,0,0,0]</span></p>
<p><span class="example-io"><b>输出:</b>1</span></p>
<p><strong>解释:</strong><br />
我们可以执行以下操作:</p>
<ul>
<li>选择下标&nbsp;<code>i = 1</code>&nbsp;执行操作,得到<span class="example-io">&nbsp;<code>nums = [1,<u><strong>1</strong></u>,<u><strong>1</strong></u>,<u><strong>1</strong></u>]</code>&nbsp;</span></li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>0 &lt;= nums[i] &lt;= 1</code></li>
</ul>

View File

@@ -0,0 +1,40 @@
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;。一次操作中,你可以将&nbsp;<code>nums</code>&nbsp;中的&nbsp;<strong>任意</strong>&nbsp;一个元素增加或者减少 1 。</p>
<p>请你返回将 <code>nums</code>&nbsp;中所有元素都可以被 3 整除的 <strong>最少</strong>&nbsp;操作次数。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,3,4]</span></p>
<p><span class="example-io"><b>输出:</b>3</span></p>
<p><strong>解释:</strong></p>
<p>通过以下 3 个操作,数组中的所有元素都可以被 3 整除:</p>
<ul>
<li>将 1 减少 1 。</li>
<li>将 2 增加 1 。</li>
<li>将 4 减少 1 。</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [3,6,9]</span></p>
<p><span class="example-io"><b>输出:</b>0</span></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 50</code></li>
<li><code>1 &lt;= nums[i] &lt;= 50</code></li>
</ul>

View File

@@ -0,0 +1,43 @@
<p>给你一个二维 <strong>二进制 </strong>数组 <code>grid</code>。请你找出一个边在水平方向和竖直方向上、面积 <strong>最小</strong> 的矩形,并且满足 <code>grid</code> 中所有的 1 都在矩形的内部。</p>
<p>返回这个矩形可能的 <strong>最小 </strong>面积。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">grid = [[0,1,0],[1,0,1]]</span></p>
<p><strong>输出:</strong> <span class="example-io">6</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/05/08/examplerect0.png" style="padding: 10px; background: rgb(255, 255, 255); border-radius: 0.5rem; width: 279px; height: 198px;" /></p>
<p>这个最小矩形的高度为 2宽度为 3因此面积为 <code>2 * 3 = 6</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">grid = [[0,0],[1,0]]</span></p>
<p><strong>输出:</strong> <span class="example-io">1</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/05/08/examplerect1.png" style="padding: 10px; background: rgb(255, 255, 255); border-radius: 0.5rem; width: 204px; height: 201px;" /></p>
<p>这个最小矩形的高度和宽度都是 1因此面积为 <code>1 * 1 = 1</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= grid.length, grid[i].length &lt;= 1000</code></li>
<li><code>grid[i][j]</code> 是 0 或 1。</li>
<li>输入保证 <code>grid</code> 中至少有一个 1 。</li>
</ul>

View File

@@ -0,0 +1,53 @@
<p>给你一个二维 <strong>二进制 </strong>数组 <code>grid</code>。你需要找到 3 个<strong> 不重叠</strong>、面积 <strong>非零</strong> 、边在水平方向和竖直方向上的矩形,并且满足 <code>grid</code> 中所有的 1 都在这些矩形的内部。</p>
<p>返回这些矩形面积之和的<strong> 最小 </strong>可能值。</p>
<p><strong>注意</strong>,这些矩形可以相接。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">grid = [[1,0,1],[1,1,1]]</span></p>
<p><strong>输出:</strong> <span class="example-io">5</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/05/14/example0rect21.png" style="padding: 10px; background: rgb(255, 255, 255); border-radius: 0.5rem; width: 280px; height: 198px;" /></p>
<ul>
<li>位于 <code>(0, 0)</code><code>(1, 0)</code> 的 1 被一个面积为 2 的矩形覆盖。</li>
<li>位于 <code>(0, 2)</code><code>(1, 2)</code> 的 1 被一个面积为 2 的矩形覆盖。</li>
<li>位于 <code>(1, 1)</code> 的 1 被一个面积为 1 的矩形覆盖。</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">grid = [[1,0,1,0],[0,1,0,1]]</span></p>
<p><strong>输出:</strong> <span class="example-io">5</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/05/14/example1rect2.png" style="padding: 10px; background: rgb(255, 255, 255); border-radius: 0.5rem; width: 356px; height: 198px;" /></p>
<ul>
<li>位于 <code>(0, 0)</code><code>(0, 2)</code> 的 1 被一个面积为 3 的矩形覆盖。</li>
<li>位于 <code>(1, 1)</code> 的 1 被一个面积为 1 的矩形覆盖。</li>
<li>位于 <code>(1, 3)</code> 的 1 被一个面积为 1 的矩形覆盖。</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= grid.length, grid[i].length &lt;= 30</code></li>
<li><code>grid[i][j]</code> 是 0 或 1。</li>
<li>输入保证 <code>grid</code> 中至少有三个 1 。</li>
</ul>

View File

@@ -0,0 +1,45 @@
<p>给你一个整数数组 <code>rewardValues</code>,长度为 <code>n</code>,代表奖励的值。</p>
<p>最初,你的总奖励 <code>x</code> 为 0所有下标都是<strong> 未标记 </strong>的。你可以执行以下操作 <strong>任意次 </strong></p>
<ul>
<li>从区间 <code>[0, n - 1]</code> 中选择一个 <strong>未标记 </strong>的下标 <code>i</code></li>
<li>如果 <code>rewardValues[i]</code> <strong>大于</strong> 你当前的总奖励 <code>x</code>,则将 <code>rewardValues[i]</code> 加到 <code>x</code> 上(即 <code>x = x + rewardValues[i]</code>),并<strong> 标记</strong> 下标 <code>i</code></li>
</ul>
<p>以整数形式返回执行最优操作能够获得的<strong> 最大</strong><em> </em>总奖励。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">rewardValues = [1,1,3,3]</span></p>
<p><strong>输出:</strong><span class="example-io">4</span></p>
<p><strong>解释:</strong></p>
<p>依次标记下标 0 和 2总奖励为 4这是可获得的最大值。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">rewardValues = [1,6,4,3,2]</span></p>
<p><strong>输出:</strong><span class="example-io">11</span></p>
<p><strong>解释:</strong></p>
<p>依次标记下标 0、2 和 1。总奖励为 11这是可获得的最大值。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= rewardValues.length &lt;= 2000</code></li>
<li><code>1 &lt;= rewardValues[i] &lt;= 2000</code></li>
</ul>

View File

@@ -0,0 +1,45 @@
<p>给你一个整数数组 <code>rewardValues</code>,长度为 <code>n</code>,代表奖励的值。</p>
<p>最初,你的总奖励 <code>x</code> 为 0所有下标都是<strong> 未标记 </strong>的。你可以执行以下操作 <strong>任意次 </strong></p>
<ul>
<li>从区间 <code>[0, n - 1]</code> 中选择一个 <strong>未标记 </strong>的下标 <code>i</code></li>
<li>如果 <code>rewardValues[i]</code> <strong>大于</strong> 你当前的总奖励 <code>x</code>,则将 <code>rewardValues[i]</code> 加到 <code>x</code> 上(即 <code>x = x + rewardValues[i]</code>),并<strong> 标记</strong> 下标 <code>i</code></li>
</ul>
<p>以整数形式返回执行最优操作能够获得的<strong> 最大</strong><em> </em>总奖励。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">rewardValues = [1,1,3,3]</span></p>
<p><strong>输出:</strong><span class="example-io">4</span></p>
<p><strong>解释:</strong></p>
<p>依次标记下标 0 和 2总奖励为 4这是可获得的最大值。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">rewardValues = [1,6,4,3,2]</span></p>
<p><strong>输出:</strong><span class="example-io">11</span></p>
<p><strong>解释:</strong></p>
<p>依次标记下标 0、2 和 1。总奖励为 11这是可获得的最大值。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= rewardValues.length &lt;= 5 * 10<sup>4</sup></code></li>
<li><code>1 &lt;= rewardValues[i] &lt;= 5 * 10<sup>4</sup></code></li>
</ul>

View File

@@ -0,0 +1,137 @@
<p>给你两个 <strong>正整数 </strong><code>n</code><code>k</code>。有 <code>n</code> 个编号从 <code>0</code><code>n - 1</code> 的孩子按顺序从左到右站成一队。</p>
<p>最初,编号为 0 的孩子拿着一个球,并且向右传球。每过一秒,拿着球的孩子就会将球传给他旁边的孩子。一旦球到达队列的 <strong>任一端 </strong>,即编号为 0 的孩子或编号为 <code>n - 1</code> 的孩子处,传球方向就会<strong> 反转 </strong></p>
<p>返回 <code>k</code> 秒后接到球的孩子的编号。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">n = 3, k = 5</span></p>
<p><strong>输出:</strong><span class="example-io">1</span></p>
<p><strong>解释:</strong></p>
<table>
<tbody>
<tr>
<th>经过的时间</th>
<th>孩子队列</th>
</tr>
<tr>
<td><code>0</code></td>
<td><code>[<u>0</u>, 1, 2]</code></td>
</tr>
<tr>
<td><code>1</code></td>
<td><code>[0, <u>1</u>, 2]</code></td>
</tr>
<tr>
<td><code>2</code></td>
<td><code>[0, 1, <u>2</u>]</code></td>
</tr>
<tr>
<td><code>3</code></td>
<td><code>[0, <u>1</u>, 2]</code></td>
</tr>
<tr>
<td><code>4</code></td>
<td><code>[<u>0</u>, 1, 2]</code></td>
</tr>
<tr>
<td><code>5</code></td>
<td><code>[0, <u>1</u>, 2]</code></td>
</tr>
</tbody>
</table>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">n = 5, k = 6</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<table>
<tbody>
<tr>
<th>经过的时间</th>
<th>孩子队列</th>
</tr>
<tr>
<td><code>0</code></td>
<td><code>[<u>0</u>, 1, 2, 3, 4]</code></td>
</tr>
<tr>
<td><code>1</code></td>
<td><code>[0, <u>1</u>, 2, 3, 4]</code></td>
</tr>
<tr>
<td><code>2</code></td>
<td><code>[0, 1, <u>2</u>, 3, 4]</code></td>
</tr>
<tr>
<td><code>3</code></td>
<td><code>[0, 1, 2, <u>3</u>, 4]</code></td>
</tr>
<tr>
<td><code>4</code></td>
<td><code>[0, 1, 2, 3, <u>4</u>]</code></td>
</tr>
<tr>
<td><code>5</code></td>
<td><code>[0, 1, 2, <u>3</u>, 4]</code></td>
</tr>
<tr>
<td><code>6</code></td>
<td><code>[0, 1, <u>2</u>, 3, 4]</code></td>
</tr>
</tbody>
</table>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">n = 4, k = 2</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<table>
<tbody>
<tr>
<th>经过的时间</th>
<th>孩子队列</th>
</tr>
<tr>
<td><code>0</code></td>
<td><code>[<u>0</u>, 1, 2, 3]</code></td>
</tr>
<tr>
<td><code>1</code></td>
<td><code>[0, <u>1</u>, 2, 3]</code></td>
</tr>
<tr>
<td><code>2</code></td>
<td><code>[0, 1, <u>2</u>, 3]</code></td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= n &lt;= 50</code></li>
<li><code>1 &lt;= k &lt;= 50</code></li>
</ul>

View File

@@ -0,0 +1,53 @@
<p>给你一个数组&nbsp;<code>nums</code>&nbsp;和一个整数&nbsp;<code>k</code>&nbsp;。你需要找到&nbsp;<code>nums</code>&nbsp;的一个&nbsp;<span data-keyword="subarray-nonempty">子数组</span>&nbsp;,满足子数组中所有元素按位或运算 <code>OR</code> 的值与 <code>k</code>&nbsp;<strong>绝对差</strong>&nbsp;尽可能 <strong></strong>&nbsp;。换言之,你需要选择一个子数组&nbsp;<code>nums[l..r]</code>&nbsp;满足 <code>|k - (nums[l] OR nums[l + 1] ... OR nums[r])|</code>&nbsp;最小。</p>
<p>请你返回 <strong>最小</strong>&nbsp;的绝对差值。</p>
<p><strong>子数组 </strong>是数组中连续的&nbsp;<strong>非空</strong>&nbsp;元素序列。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,4,5], k = 3</span></p>
<p><span class="example-io"><b>输出:</b>0</span></p>
<p><strong>解释:</strong></p>
<p>子数组&nbsp;<code>nums[0..1]</code> 的按位 <code>OR</code> 运算值为 3 ,得到最小差值&nbsp;<code>|3 - 3| = 0</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,3,1,3], k = 2</span></p>
<p><span class="example-io"><b>输出:</b>1</span></p>
<p><strong>解释:</strong></p>
<p>子数组&nbsp;<code>nums[1..1]</code> 的按位 <code>OR</code> 运算值为 3 ,得到最小差值&nbsp;<code>|3 - 2| = 1</code></p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1], k = 10</span></p>
<p><span class="example-io"><b>输出:</b>9</span></p>
<p><strong>解释:</strong></p>
<p>只有一个子数组,按位 <code>OR</code> 运算值为 1 ,得到最小差值&nbsp;<code>|10 - 1| = 9</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
<li><code>1 &lt;= k &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,70 @@
<p>&nbsp;<code>n</code>&nbsp;位玩家在进行比赛,玩家编号依次为&nbsp;<code>0</code>&nbsp;&nbsp;<code>n - 1</code>&nbsp;</p>
<p>给你一个长度为 <code>n</code>&nbsp;的整数数组&nbsp;<code>skills</code>&nbsp;和一个 <strong></strong>&nbsp;整数&nbsp;<code>k</code>&nbsp;,其中&nbsp;<code>skills[i]</code>&nbsp;是第 <code>i</code>&nbsp;位玩家的技能等级。<code>skills</code>&nbsp;中所有整数 <strong>互不相同</strong>&nbsp;</p>
<p>所有玩家从编号 <code>0</code>&nbsp;<code>n - 1</code>&nbsp;排成一列。</p>
<p>比赛进行方式如下:</p>
<ul>
<li>队列中最前面两名玩家进行一场比赛,技能等级 <strong>更高</strong>&nbsp;的玩家胜出。</li>
<li>比赛后,获胜者保持在队列的开头,而失败者排到队列的末尾。</li>
</ul>
<p>这个比赛的赢家是 <strong>第一位连续</strong>&nbsp;赢下&nbsp;<code>k</code>&nbsp;场比赛的玩家。</p>
<p>请你返回这个比赛的赢家编号。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>skills = [4,2,6,3,9], k = 2</span></p>
<p><b>输出:</b>2</p>
<p><strong>解释:</strong></p>
<p>一开始,队列里的玩家为&nbsp;<code>[0,1,2,3,4]</code>&nbsp;。比赛过程如下:</p>
<ul>
<li>玩家 0 和 1 进行一场比赛,玩家 0 的技能等级高于玩家 1 ,玩家 0 胜出,队列变为&nbsp;<code>[0,2,3,4,1]</code>&nbsp;</li>
<li>玩家 0 和 2 进行一场比赛,玩家 2 的技能等级高于玩家 0 ,玩家 2 胜出,队列变为&nbsp;<code>[2,3,4,1,0]</code>&nbsp;</li>
<li>玩家 2 和 3 进行一场比赛,玩家 2 的技能等级高于玩家 3 ,玩家 2 胜出,队列变为&nbsp;<code>[2,4,1,0,3]</code>&nbsp;</li>
</ul>
<p>玩家 2 连续赢了&nbsp;<code>k = 2</code>&nbsp;场比赛,所以赢家是玩家 2 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>skills = [2,5,4], k = 3</span></p>
<p><b>输出:</b>1</p>
<p><strong>解释:</strong></p>
<p>一开始,队列里的玩家为&nbsp;<code>[0,1,2]</code>&nbsp;。比赛过程如下:</p>
<ul>
<li>玩家 0 和 1 进行一场比赛,玩家 1 的技能等级高于玩家 0 ,玩家 1 胜出,队列变为&nbsp;<code>[1,2,0]</code>&nbsp;</li>
<li>玩家 1&nbsp;和 2&nbsp;进行一场比赛,玩家 1 的技能等级高于玩家 2&nbsp;,玩家 1 胜出,队列变为&nbsp;<code>[1,0,2]</code>&nbsp;</li>
<li>玩家 1&nbsp;和 0&nbsp;进行一场比赛,玩家 1 的技能等级高于玩家 0&nbsp;,玩家 1 胜出,队列变为&nbsp;<code>[1,2,0]</code>&nbsp;</li>
</ul>
<p>玩家 1 连续赢了&nbsp;<code>k = 3</code>&nbsp;场比赛,所以赢家是玩家 1 。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>n == skills.length</code></li>
<li><code>2 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= k &lt;= 10<sup>9</sup></code></li>
<li><code>1 &lt;= skills[i] &lt;= 10<sup>6</sup></code></li>
<li><code>skills</code>&nbsp;中的整数互不相同。</li>
</ul>

View File

@@ -0,0 +1,67 @@
<p>数组 <code>arr</code>&nbsp;&nbsp;<strong>大于</strong>&nbsp;前面和后面相邻元素的元素被称为 <strong>峰值</strong>&nbsp;元素。</p>
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;和一个二维整数数组&nbsp;<code>queries</code>&nbsp;</p>
<p>你需要处理以下两种类型的操作:</p>
<ul>
<li><code>queries[i] = [1, l<sub>i</sub>, r<sub>i</sub>]</code>&nbsp;,求出子数组&nbsp;<code>nums[l<sub>i</sub>..r<sub>i</sub>]</code>&nbsp;&nbsp;<strong>峰值</strong>&nbsp;元素的数目。<!-- notionvc: 73b20b7c-e1ab-4dac-86d0-13761094a9ae --></li>
<li><code>queries[i] = [2, index<sub>i</sub>, val<sub>i</sub>]</code>&nbsp;,将&nbsp;<code>nums[index<sub>i</sub>]</code>&nbsp;变为&nbsp;<code><font face="monospace">val<sub>i</sub></font></code><font face="monospace">&nbsp;</font></li>
</ul>
<p>请你返回一个数组&nbsp;<code>answer</code>&nbsp;,它依次包含每一个第一种操作的答案。<!-- notionvc: a9ccef22-4061-4b5a-b4cc-a2b2a0e12f30 --></p>
<p><strong>注意:</strong></p>
<ul>
<li>子数组中 <strong>第一个</strong>&nbsp;<strong>最后一个</strong>&nbsp;元素都 <strong>不是</strong>&nbsp;峰值元素。</li>
</ul>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [3,1,4,2,5], queries = [[2,3,4],[1,0,4]]</span></p>
<p><span class="example-io"><b>输出:</b>[0]</span></p>
<p><strong>解释:</strong></p>
<p>第一个操作:我们将&nbsp;<code>nums[3]</code>&nbsp;变为&nbsp;4 <code>nums</code>&nbsp;变为&nbsp;<code>[3,1,4,4,5]</code>&nbsp;</p>
<p>第二个操作:<code>[3,1,4,4,5]</code>&nbsp;中峰值元素的数目为 0 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [4,1,4,2,1,5], queries = [[2,2,4],[1,0,2],[1,0,4]]</span></p>
<p><span class="example-io"><b>输出:</b>[0,1]</span></p>
<p><strong>解释:</strong></p>
<p>第一个操作:<code>nums[2]</code>&nbsp;变为 4 ,它已经是 4 了,所以保持不变。</p>
<p>第二个操作:<code>[4,1,4]</code>&nbsp;中峰值元素的数目为 0 。</p>
<p>第三个操作:第二个 4 是&nbsp;<code>[4,1,4,2,1]</code>&nbsp;中的峰值元素。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>3 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= queries.length &lt;= 10<sup>5</sup></code></li>
<li><code>queries[i][0] == 1</code>&nbsp;或者&nbsp;<code>queries[i][0] == 2</code></li>
<li>对于所有的 <code>i</code>&nbsp;,都有:
<ul>
<li><code>queries[i][0] == 1</code>&nbsp;<code>0 &lt;= queries[i][1] &lt;= queries[i][2] &lt;= nums.length - 1</code></li>
<li><code>queries[i][0] == 2</code> <code>0 &lt;= queries[i][1] &lt;= nums.length - 1</code>, <code>1 &lt;= queries[i][2] &lt;= 10<sup>5</sup></code></li>
</ul>
</li>
</ul>

View File

@@ -0,0 +1,44 @@
<p>一个魔法师有许多不同的咒语。</p>
<p>给你一个数组&nbsp;<code>power</code>&nbsp;,其中每个元素表示一个咒语的伤害值,可能会有多个咒语有相同的伤害值。</p>
<p>已知魔法师使用伤害值为&nbsp;<code>power[i]</code>&nbsp;的咒语时,他们就&nbsp;<strong>不能</strong>&nbsp;使用伤害为&nbsp;<code>power[i] - 2</code>&nbsp;<code>power[i] - 1</code>&nbsp;<code>power[i] + 1</code>&nbsp;或者&nbsp;<code>power[i] + 2</code>&nbsp;的咒语。</p>
<p>每个咒语最多只能被使用 <strong>一次</strong>&nbsp;</p>
<p>请你返回这个魔法师可以达到的伤害值之和的 <strong>最大值</strong>&nbsp;</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>power = [1,1,3,4]</span></p>
<p><span class="example-io"><b>输出:</b>6</span></p>
<p><strong>解释:</strong></p>
<p>可以使用咒语 013伤害值分别为 114总伤害值为 6 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>power = [7,1,6,6]</span></p>
<p><span class="example-io"><b>输出:</b>13</span></p>
<p><strong>解释:</strong></p>
<p>可以使用咒语 123伤害值分别为 166总伤害值为 13 。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= power.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= power[i] &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,74 @@
<p>给你一个长度为 <code>n</code> 的整数数组 <code>nums</code></p>
<p>子数组 <code>nums[l..r]</code>(其中 <code>0 &lt;= l &lt;= r &lt; n</code>)的 <strong>成本 </strong>定义为:</p>
<p><code>cost(l, r) = nums[l] - nums[l + 1] + ... + nums[r] * (1)<sup>r l</sup></code></p>
<p>你的任务是将 <code>nums</code> 分割成若干子数组,使得所有子数组的成本之和 <strong>最大化</strong>,并确保每个元素 <strong>正好 </strong>属于一个子数组。</p>
<p>具体来说,如果 <code>nums</code> 被分割成 <code>k</code> 个子数组,且分割点为索引 <code>i<sub>1</sub>, i<sub>2</sub>, ..., i<sub>k 1</sub></code>(其中 <code>0 &lt;= i<sub>1</sub> &lt; i<sub>2</sub> &lt; ... &lt; i<sub>k - 1</sub> &lt; n - 1</code>),则总成本为:</p>
<p><code>cost(0, i<sub>1</sub>) + cost(i<sub>1</sub> + 1, i<sub>2</sub>) + ... + cost(i<sub>k 1</sub> + 1, n 1)</code></p>
<p>返回在最优分割方式下的子数组成本之和的最大值。</p>
<p><strong>注意:</strong>如果 <code>nums</code> 没有被分割,即 <code>k = 1</code>,则总成本即为 <code>cost(0, n - 1)</code></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [1,-2,3,4]</span></p>
<p><strong>输出:</strong> <span class="example-io">10</span></p>
<p><strong>解释:</strong></p>
<p>一种总成本最大化的方法是将 <code>[1, -2, 3, 4]</code> 分割成子数组 <code>[1, -2, 3]</code><code>[4]</code>。总成本为 <code>(1 + 2 + 3) + 4 = 10</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [1,-1,1,-1]</span></p>
<p><strong>输出:</strong> <span class="example-io">4</span></p>
<p><strong>解释:</strong></p>
<p>一种总成本最大化的方法是将 <code>[1, -1, 1, -1]</code> 分割成子数组 <code>[1, -1]</code><code>[1, -1]</code>。总成本为 <code>(1 + 1) + (1 + 1) = 4</code></p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [0]</span></p>
<p><strong>输出:</strong> 0</p>
<p><strong>解释:</strong></p>
<p>无法进一步分割数组,因此答案为 0。</p>
</div>
<p><strong class="example">示例 4</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [1,-1]</span></p>
<p><strong>输出:</strong> <span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>选择整个数组,总成本为 <code>1 + 1 = 2</code>,这是可能的最大成本。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>-10<sup>9</sup> &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,147 @@
<p>你有一个初始为空的浮点数数组 <code>averages</code>。另给你一个包含 <code>n</code> 个整数的数组 <code>nums</code>,其中 <code>n</code> 为偶数。</p>
<p>你需要重复以下步骤 <code>n / 2</code> 次:</p>
<ul>
<li><code>nums</code> 中移除<strong> 最小 </strong>的元素 <code>minElement</code><strong> 最大 </strong>的元素 <code>maxElement</code></li>
<li><code>(minElement + maxElement) / 2</code> 加入到 <code>averages</code> 中。</li>
</ul>
<p>返回 <code>averages</code> 中的 <strong>最小 </strong>元素。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [7,8,3,4,15,13,4,1]</span></p>
<p><strong>输出:</strong> <span class="example-io">5.5</span></p>
<p><strong>解释:</strong></p>
<table>
<tbody>
<tr>
<th>步骤</th>
<th>nums</th>
<th>averages</th>
</tr>
<tr>
<td>0</td>
<td>[7,8,3,4,15,13,4,1]</td>
<td>[]</td>
</tr>
<tr>
<td>1</td>
<td>[7,8,3,4,13,4]</td>
<td>[8]</td>
</tr>
<tr>
<td>2</td>
<td>[7,8,4,4]</td>
<td>[8,8]</td>
</tr>
<tr>
<td>3</td>
<td>[7,4]</td>
<td>[8,8,6]</td>
</tr>
<tr>
<td>4</td>
<td>[]</td>
<td>[8,8,6,5.5]</td>
</tr>
</tbody>
</table>
返回 averages 中最小的元素,即 5.5。</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [1,9,8,3,10,5]</span></p>
<p><strong>输出:</strong> <span class="example-io">5.5</span></p>
<p><strong>解释:</strong></p>
<table>
<tbody>
<tr>
<th>步骤</th>
<th>nums</th>
<th>averages</th>
</tr>
<tr>
<td>0</td>
<td>[1,9,8,3,10,5]</td>
<td>[]</td>
</tr>
<tr>
<td>1</td>
<td>[9,8,3,5]</td>
<td>[5.5]</td>
</tr>
<tr>
<td>2</td>
<td>[8,5]</td>
<td>[5.5,6]</td>
</tr>
<tr>
<td>3</td>
<td>[]</td>
<td>[5.5,6,6.5]</td>
</tr>
</tbody>
</table>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">nums = [1,2,3,7,8,9]</span></p>
<p><strong>输出:</strong> <span class="example-io">5.0</span></p>
<p><strong>解释:</strong></p>
<table>
<tbody>
<tr>
<th>步骤</th>
<th>nums</th>
<th>averages</th>
</tr>
<tr>
<td>0</td>
<td>[1,2,3,7,8,9]</td>
<td>[]</td>
</tr>
<tr>
<td>1</td>
<td>[2,3,7,8]</td>
<td>[5]</td>
</tr>
<tr>
<td>2</td>
<td>[3,7]</td>
<td>[5,5]</td>
</tr>
<tr>
<td>3</td>
<td>[]</td>
<td>[5,5,5]</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= n == nums.length &lt;= 50</code></li>
<li><code>n</code> 为偶数。</li>
<li><code>1 &lt;= nums[i] &lt;= 50</code></li>
</ul>

View File

@@ -0,0 +1,40 @@
<p>给你一个整数数组 <code>hours</code>,表示以 <strong>小时 </strong>为单位的时间,返回一个整数,表示满足 <code>i &lt; j</code><code>hours[i] + hours[j]</code> 构成 <strong>整天 </strong>的下标对&nbsp;<code>i</code>, <code>j</code> 的数目。</p>
<p><strong>整天 </strong>定义为时间持续时间是 24 小时的 <strong>整数倍 </strong></p>
<p>例如1 天是 24 小时2 天是 48 小时3 天是 72 小时,以此类推。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">hours = [12,12,30,24,24]</span></p>
<p><strong>输出:</strong> <span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>构成整天的下标对分别是 <code>(0, 1)</code><code>(3, 4)</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">hours = [72,48,24,3]</span></p>
<p><strong>输出:</strong> <span class="example-io">3</span></p>
<p><strong>解释:</strong></p>
<p>构成整天的下标对分别是 <code>(0, 1)</code><code>(0, 2)</code><code>(1, 2)</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= hours.length &lt;= 100</code></li>
<li><code>1 &lt;= hours[i] &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,40 @@
<p>给你一个整数数组 <code>hours</code>,表示以 <strong>小时 </strong>为单位的时间,返回一个整数,表示满足 <code>i &lt; j</code><code>hours[i] + hours[j]</code> 构成 <strong>整天 </strong>的下标对&nbsp;<code>i</code>, <code>j</code> 的数目。</p>
<p><strong>整天 </strong>定义为时间持续时间是 24 小时的 <strong>整数倍 </strong></p>
<p>例如1 天是 24 小时2 天是 48 小时3 天是 72 小时,以此类推。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">hours = [12,12,30,24,24]</span></p>
<p><strong>输出:</strong> <span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>构成整天的下标对分别是 <code>(0, 1)</code><code>(3, 4)</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">hours = [72,48,24,3]</span></p>
<p><strong>输出:</strong> <span class="example-io">3</span></p>
<p><strong>解释:</strong></p>
<p>构成整天的下标对分别是 <code>(0, 1)</code><code>(0, 2)</code><code>(1, 2)</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= hours.length &lt;= 5 * 10<sup>5</sup></code></li>
<li><code>1 &lt;= hours[i] &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,39 @@
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;和一个 <strong>非负</strong>&nbsp;整数&nbsp;<code>k</code>&nbsp;。如果一个整数序列&nbsp;<code>seq</code>&nbsp;满足在范围下标范围&nbsp;<code>[0, seq.length - 2]</code>&nbsp;中存在 <strong>不超过</strong>&nbsp;<code>k</code>&nbsp;个下标 <code>i</code>&nbsp;满足&nbsp;<code>seq[i] != seq[i + 1]</code>&nbsp;,那么我们称这个整数序列为&nbsp;<strong></strong>&nbsp;序列。</p>
<p>请你返回 <code>nums</code>&nbsp;&nbsp;<strong></strong> <span data-keyword="subsequence-array">子序列</span>&nbsp;的最长长度</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,1,1,3], k = 2</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong></p>
<p>最长好子序列为&nbsp;<code>[<em><strong>1</strong></em>,<em><strong>2</strong></em>,<strong><em>1</em></strong>,<em><strong>1</strong></em>,3]</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,3,4,5,1], k = 0</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>最长好子序列为&nbsp;<code>[<strong><em>1</em></strong>,2,3,4,5,<strong><em>1</em></strong>]</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 500</code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
<li><code>0 &lt;= k &lt;= min(nums.length, 25)</code></li>
</ul>

View File

@@ -0,0 +1,39 @@
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;和一个 <strong>非负</strong>&nbsp;整数&nbsp;<code>k</code>&nbsp;。如果一个整数序列&nbsp;<code>seq</code>&nbsp;满足在范围下标范围&nbsp;<code>[0, seq.length - 2]</code>&nbsp;中存在 <strong>不超过</strong>&nbsp;<code>k</code>&nbsp;个下标 <code>i</code>&nbsp;满足&nbsp;<code>seq[i] != seq[i + 1]</code>&nbsp;,那么我们称这个整数序列为&nbsp;<strong></strong>&nbsp;序列。</p>
<p>请你返回 <code>nums</code>&nbsp;&nbsp;<strong></strong> <span data-keyword="subsequence-array">子序列</span>&nbsp;的最长长度</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,1,1,3], k = 2</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong></p>
<p>最长好子序列为&nbsp;<code>[<em><strong>1</strong></em>,<em><strong>2</strong></em>,<strong><em>1</em></strong>,<em><strong>1</strong></em>,3]</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,3,4,5,1], k = 0</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>最长好子序列为&nbsp;<code>[<strong><em>1</em></strong>,2,3,4,5,<strong><em>1</em></strong>]</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 5 * 10<sup>3</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
<li><code>0 &lt;= k &lt;= min(50, nums.length)</code></li>
</ul>

View File

@@ -0,0 +1,47 @@
<p>给你一个字符串&nbsp;<code>s</code>&nbsp;</p>
<p>你的任务是重复以下操作删除 <strong>所有</strong>&nbsp;数字字符:</p>
<ul>
<li>删除 <strong>第一个数字字符</strong>&nbsp;以及它左边 <strong>最近</strong>&nbsp;<strong>非数字</strong>&nbsp;字符。</li>
</ul>
<p>请你返回删除所有数字字符以后剩下的字符串。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>s = "abc"</span></p>
<p><span class="example-io"><b>输出:</b>"abc"</span></p>
<p><strong>解释:</strong></p>
<p>字符串中没有数字。<!-- notionvc: ff07e34f-b1d6-41fb-9f83-5d0ba3c1ecde --></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>s = "cb34"</span></p>
<p><span class="example-io"><b>输出:</b>""</span></p>
<p><b>解释:</b></p>
<p>一开始,我们对&nbsp;<code>s[2]</code>&nbsp;执行操作,<code>s</code>&nbsp;变为&nbsp;<code>"c4"</code>&nbsp;</p>
<p>然后对&nbsp;<code>s[1]</code>&nbsp;执行操作,<code>s</code>&nbsp;变为&nbsp;<code>""</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 100</code></li>
<li><code>s</code>&nbsp;只包含小写英文字母和数字字符。</li>
<li>输入保证所有数字都可以按以上操作被删除。</li>
</ul>

View File

@@ -0,0 +1,94 @@
<p>给你一个整数&nbsp;<code>n</code>&nbsp;和一个二维数组&nbsp;<code>requirements</code>&nbsp;,其中&nbsp;<code>requirements[i] = [end<sub>i</sub>, cnt<sub>i</sub>]</code> <span class="text-only" data-eleid="10" style="white-space: pre;">表示这个要求中的末尾下标和 <strong>逆序对</strong> 的数目。</span></p>
<p>整数数组 <code>nums</code>&nbsp;中一个下标对&nbsp;<code>(i, j)</code>&nbsp;如果满足以下条件,那么它们被称为一个 <strong>逆序对</strong>&nbsp;</p>
<ul>
<li><code>i &lt; j</code>&nbsp;&nbsp;<code>nums[i] &gt; nums[j]</code></li>
</ul>
<p>请你返回&nbsp;<code>[0, 1, 2, ..., n - 1]</code>&nbsp;&nbsp;<span data-keyword="permutation">排列</span> <code>perm</code>&nbsp;的数目,满足对 <strong>所有</strong>&nbsp;&nbsp;<code>requirements[i]</code>&nbsp;都有&nbsp;<code>perm[0..end<sub>i</sub>]</code>&nbsp;恰好有&nbsp;<code>cnt<sub>i</sub></code>&nbsp;个逆序对。</p>
<p>由于答案可能会很大,将它对&nbsp;<code>10<sup>9</sup> + 7</code>&nbsp;<strong>取余</strong>&nbsp;后返回。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>n = 3, requirements = [[2,2],[0,0]]</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>两个排列为:</p>
<ul>
<li><code>[2, 0, 1]</code>
<ul>
<li>前缀&nbsp;<code>[2, 0, 1]</code>&nbsp;的逆序对为&nbsp;<code>(0, 1)</code>&nbsp;<code>(0, 2)</code>&nbsp;</li>
<li>前缀&nbsp;<code>[2]</code>&nbsp;的逆序对数目为 0 个。</li>
</ul>
</li>
<li><code>[1, 2, 0]</code>
<ul>
<li>前缀&nbsp;<code>[1, 2, 0]</code>&nbsp;的逆序对为&nbsp;<code>(0, 2)</code>&nbsp;<code>(1, 2)</code>&nbsp;</li>
<li>前缀&nbsp;<code>[1]</code>&nbsp;的逆序对数目为 0 个。</li>
</ul>
</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>n = 3, requirements = [[2,2],[1,1],[0,0]]</span></p>
<p><b>输出:</b>1</p>
<p><strong>解释:</strong></p>
<p>唯一满足要求的排列是&nbsp;<code>[2, 0, 1]</code>&nbsp;</p>
<ul>
<li>前缀&nbsp;<code>[2, 0, 1]</code>&nbsp;的逆序对为&nbsp;<code>(0, 1)</code>&nbsp;<code>(0, 2)</code>&nbsp;</li>
<li>前缀&nbsp;<code>[2, 0]</code>&nbsp;的逆序对为&nbsp;<code>(0, 1)</code>&nbsp;</li>
<li>前缀&nbsp;<code>[2]</code>&nbsp;的逆序对数目为 0 。</li>
</ul>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>n = 2, requirements = [[0,0],[1,0]]</span></p>
<p><span class="example-io"><b>输出:</b>1</span></p>
<p><b>解释:</b></p>
<p>唯一满足要求的排列为&nbsp;<code>[0, 1]</code>&nbsp;</p>
<ul>
<li>前缀&nbsp;<code>[0]</code>&nbsp;的逆序对数目为 0 。</li>
<li>前缀&nbsp;<code>[0, 1]</code>&nbsp;的逆序对为&nbsp;<code>(0, 1)</code>&nbsp;</li>
</ul>
</div>
<div id="gtx-trans" style="position: absolute; left: 198px; top: 756px;">
<div class="gtx-trans-icon">&nbsp;</div>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= n &lt;= 300</code></li>
<li><code>1 &lt;= requirements.length &lt;= n</code></li>
<li><code>requirements[i] = [end<sub>i</sub>, cnt<sub>i</sub>]</code></li>
<li><code>0 &lt;= end<sub>i</sub> &lt;= n - 1</code></li>
<li><code>0 &lt;= cnt<sub>i</sub> &lt;= 400</code></li>
<li>输入保证至少有一个&nbsp;<code>i</code>&nbsp;满足&nbsp;<code>end<sub>i</sub> == n - 1</code>&nbsp;</li>
<li>输入保证所有的&nbsp;<code>end<sub>i</sub></code>&nbsp;互不相同。</li>
</ul>