mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-05 23:41:41 +08:00
update
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<p>给你两个整数 <code>n</code> 和 <code>k</code>。</p>
|
||||
|
||||
<p>最初,你有一个长度为 <code>n</code> 的整数数组 <code>a</code>,对所有 <code>0 <= i <= 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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n, k <= 1000</code></li>
|
||||
</ul>
|
@@ -0,0 +1,50 @@
|
||||
<p>给你一个二进制数组 <code>nums</code> 。</p>
|
||||
|
||||
<p>你可以对数组执行以下操作 <strong>任意</strong> 次(也可以 0 次):</p>
|
||||
|
||||
<ul>
|
||||
<li>选择数组中 <strong>任意连续</strong> 3 个元素,并将它们 <strong>全部反转</strong> 。</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>反转</strong> 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。</p>
|
||||
|
||||
<p>请你返回将 <code>nums</code> 中所有元素变为 1 的 <strong>最少</strong> 操作次数。如果无法全部变成 1 ,返回 -1 。</p>
|
||||
|
||||
<p> </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 的元素并反转,得到 <code>nums = [<u><strong>1</strong></u>,<u><strong>0</strong></u>,<u><strong>0</strong></u>,1,0,0]</code> 。</li>
|
||||
<li>选择下标为 1 ,2 和 3 的元素并反转,得到 <code>nums = [1,<u><strong>1</strong></u>,<u><strong>1</strong></u>,<strong><u>0</u></strong>,0,0]</code> 。</li>
|
||||
<li>选择下标为 3 ,4 和 5 的元素并反转,得到 <code>nums = [1,1,1,<strong><u>1</u></strong>,<u><strong>1</strong></u>,<u><strong>1</strong></u>]</code> 。</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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>3 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>0 <= nums[i] <= 1</code></li>
|
||||
</ul>
|
@@ -0,0 +1,55 @@
|
||||
<p>给你一个二进制数组 <code>nums</code> 。</p>
|
||||
|
||||
<p>你可以对数组执行以下操作 <strong>任意</strong> 次(也可以 0 次):</p>
|
||||
|
||||
<ul>
|
||||
<li>选择数组中 <strong>任意</strong> 一个下标 <code>i</code> ,并将从下标 <code>i</code> 开始一直到数组末尾 <strong>所有</strong> 元素 <strong>反转</strong> 。</li>
|
||||
</ul>
|
||||
|
||||
<p><b>反转</b> 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。</p>
|
||||
|
||||
<p>请你返回将 <code>nums</code> 中所有元素变为 1 的 <strong>最少</strong> 操作次数。</p>
|
||||
|
||||
<p> </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>选择下标 <code>i = 1</code> 执行操作,得到<span class="example-io"> <code>nums = [0,<u><strong>0</strong></u>,<u><strong>0</strong></u>,<u><strong>1</strong></u>,<u><strong>0</strong></u>]</code> 。</span></li>
|
||||
<li>选择下标 <code>i = 0</code> 执行操作,得到<span class="example-io"> <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> 。</span></li>
|
||||
<li>选择下标 <code>i = 4</code> 执行操作,得到<span class="example-io"> <code>nums = [1,1,1,0,<u><strong>0</strong></u>]</code> 。</span></li>
|
||||
<li>选择下标 <code>i = 3</code> 执行操作,得到<span class="example-io"> <code>nums = [1,1,1,<u><strong>1</strong></u>,<u><strong>1</strong></u>]</code> 。</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>选择下标 <code>i = 1</code> 执行操作,得到<span class="example-io"> <code>nums = [1,<u><strong>1</strong></u>,<u><strong>1</strong></u>,<u><strong>1</strong></u>]</code> 。</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>0 <= nums[i] <= 1</code></li>
|
||||
</ul>
|
@@ -0,0 +1,40 @@
|
||||
<p>给你一个整数数组 <code>nums</code> 。一次操作中,你可以将 <code>nums</code> 中的 <strong>任意</strong> 一个元素增加或者减少 1 。</p>
|
||||
|
||||
<p>请你返回将 <code>nums</code> 中所有元素都可以被 3 整除的 <strong>最少</strong> 操作次数。</p>
|
||||
|
||||
<p> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 50</code></li>
|
||||
<li><code>1 <= nums[i] <= 50</code></li>
|
||||
</ul>
|
@@ -0,0 +1,43 @@
|
||||
<p>给你一个二维 <strong>二进制 </strong>数组 <code>grid</code>。请你找出一个边在水平方向和竖直方向上、面积 <strong>最小</strong> 的矩形,并且满足 <code>grid</code> 中所有的 1 都在矩形的内部。</p>
|
||||
|
||||
<p>返回这个矩形可能的 <strong>最小 </strong>面积。</p>
|
||||
|
||||
<p> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= grid.length, grid[i].length <= 1000</code></li>
|
||||
<li><code>grid[i][j]</code> 是 0 或 1。</li>
|
||||
<li>输入保证 <code>grid</code> 中至少有一个 1 。</li>
|
||||
</ul>
|
@@ -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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= grid.length, grid[i].length <= 30</code></li>
|
||||
<li><code>grid[i][j]</code> 是 0 或 1。</li>
|
||||
<li>输入保证 <code>grid</code> 中至少有三个 1 。</li>
|
||||
</ul>
|
@@ -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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= rewardValues.length <= 2000</code></li>
|
||||
<li><code>1 <= rewardValues[i] <= 2000</code></li>
|
||||
</ul>
|
@@ -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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= rewardValues.length <= 5 * 10<sup>4</sup></code></li>
|
||||
<li><code>1 <= rewardValues[i] <= 5 * 10<sup>4</sup></code></li>
|
||||
</ul>
|
@@ -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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= n <= 50</code></li>
|
||||
<li><code>1 <= k <= 50</code></li>
|
||||
</ul>
|
@@ -0,0 +1,53 @@
|
||||
<p>给你一个数组 <code>nums</code> 和一个整数 <code>k</code> 。你需要找到 <code>nums</code> 的一个 <span data-keyword="subarray-nonempty">子数组</span> ,满足子数组中所有元素按位或运算 <code>OR</code> 的值与 <code>k</code> 的 <strong>绝对差</strong> 尽可能 <strong>小</strong> 。换言之,你需要选择一个子数组 <code>nums[l..r]</code> 满足 <code>|k - (nums[l] OR nums[l + 1] ... OR nums[r])|</code> 最小。</p>
|
||||
|
||||
<p>请你返回 <strong>最小</strong> 的绝对差值。</p>
|
||||
|
||||
<p><strong>子数组 </strong>是数组中连续的 <strong>非空</strong> 元素序列。</p>
|
||||
|
||||
<p> </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>子数组 <code>nums[0..1]</code> 的按位 <code>OR</code> 运算值为 3 ,得到最小差值 <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>子数组 <code>nums[1..1]</code> 的按位 <code>OR</code> 运算值为 3 ,得到最小差值 <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 ,得到最小差值 <code>|10 - 1| = 9</code> 。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= nums[i] <= 10<sup>9</sup></code></li>
|
||||
<li><code>1 <= k <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,70 @@
|
||||
<p>有 <code>n</code> 位玩家在进行比赛,玩家编号依次为 <code>0</code> 到 <code>n - 1</code> 。</p>
|
||||
|
||||
<p>给你一个长度为 <code>n</code> 的整数数组 <code>skills</code> 和一个 <strong>正</strong> 整数 <code>k</code> ,其中 <code>skills[i]</code> 是第 <code>i</code> 位玩家的技能等级。<code>skills</code> 中所有整数 <strong>互不相同</strong> 。</p>
|
||||
|
||||
<p>所有玩家从编号 <code>0</code> 到 <code>n - 1</code> 排成一列。</p>
|
||||
|
||||
<p>比赛进行方式如下:</p>
|
||||
|
||||
<ul>
|
||||
<li>队列中最前面两名玩家进行一场比赛,技能等级 <strong>更高</strong> 的玩家胜出。</li>
|
||||
<li>比赛后,获胜者保持在队列的开头,而失败者排到队列的末尾。</li>
|
||||
</ul>
|
||||
|
||||
<p>这个比赛的赢家是 <strong>第一位连续</strong> 赢下 <code>k</code> 场比赛的玩家。</p>
|
||||
|
||||
<p>请你返回这个比赛的赢家编号。</p>
|
||||
|
||||
<p> </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>一开始,队列里的玩家为 <code>[0,1,2,3,4]</code> 。比赛过程如下:</p>
|
||||
|
||||
<ul>
|
||||
<li>玩家 0 和 1 进行一场比赛,玩家 0 的技能等级高于玩家 1 ,玩家 0 胜出,队列变为 <code>[0,2,3,4,1]</code> 。</li>
|
||||
<li>玩家 0 和 2 进行一场比赛,玩家 2 的技能等级高于玩家 0 ,玩家 2 胜出,队列变为 <code>[2,3,4,1,0]</code> 。</li>
|
||||
<li>玩家 2 和 3 进行一场比赛,玩家 2 的技能等级高于玩家 3 ,玩家 2 胜出,队列变为 <code>[2,4,1,0,3]</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>玩家 2 连续赢了 <code>k = 2</code> 场比赛,所以赢家是玩家 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>一开始,队列里的玩家为 <code>[0,1,2]</code> 。比赛过程如下:</p>
|
||||
|
||||
<ul>
|
||||
<li>玩家 0 和 1 进行一场比赛,玩家 1 的技能等级高于玩家 0 ,玩家 1 胜出,队列变为 <code>[1,2,0]</code> 。</li>
|
||||
<li>玩家 1 和 2 进行一场比赛,玩家 1 的技能等级高于玩家 2 ,玩家 1 胜出,队列变为 <code>[1,0,2]</code> 。</li>
|
||||
<li>玩家 1 和 0 进行一场比赛,玩家 1 的技能等级高于玩家 0 ,玩家 1 胜出,队列变为 <code>[1,2,0]</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>玩家 1 连续赢了 <code>k = 3</code> 场比赛,所以赢家是玩家 1 。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>n == skills.length</code></li>
|
||||
<li><code>2 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= k <= 10<sup>9</sup></code></li>
|
||||
<li><code>1 <= skills[i] <= 10<sup>6</sup></code></li>
|
||||
<li><code>skills</code> 中的整数互不相同。</li>
|
||||
</ul>
|
67
leetcode-cn/problem (Chinese)/数组中的峰值 [peaks-in-array].html
Normal file
67
leetcode-cn/problem (Chinese)/数组中的峰值 [peaks-in-array].html
Normal file
@@ -0,0 +1,67 @@
|
||||
<p>数组 <code>arr</code> 中 <strong>大于</strong> 前面和后面相邻元素的元素被称为 <strong>峰值</strong> 元素。</p>
|
||||
|
||||
<p>给你一个整数数组 <code>nums</code> 和一个二维整数数组 <code>queries</code> 。</p>
|
||||
|
||||
<p>你需要处理以下两种类型的操作:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>queries[i] = [1, l<sub>i</sub>, r<sub>i</sub>]</code> ,求出子数组 <code>nums[l<sub>i</sub>..r<sub>i</sub>]</code> 中 <strong>峰值</strong> 元素的数目。<!-- notionvc: 73b20b7c-e1ab-4dac-86d0-13761094a9ae --></li>
|
||||
<li><code>queries[i] = [2, index<sub>i</sub>, val<sub>i</sub>]</code> ,将 <code>nums[index<sub>i</sub>]</code> 变为 <code><font face="monospace">val<sub>i</sub></font></code><font face="monospace"> 。</font></li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回一个数组 <code>answer</code> ,它依次包含每一个第一种操作的答案。<!-- notionvc: a9ccef22-4061-4b5a-b4cc-a2b2a0e12f30 --></p>
|
||||
|
||||
<p><strong>注意:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>子数组中 <strong>第一个</strong> 和 <strong>最后一个</strong> 元素都 <strong>不是</strong> 峰值元素。</li>
|
||||
</ul>
|
||||
|
||||
<p> </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>第一个操作:我们将 <code>nums[3]</code> 变为 4 ,<code>nums</code> 变为 <code>[3,1,4,4,5]</code> 。</p>
|
||||
|
||||
<p>第二个操作:<code>[3,1,4,4,5]</code> 中峰值元素的数目为 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> 变为 4 ,它已经是 4 了,所以保持不变。</p>
|
||||
|
||||
<p>第二个操作:<code>[4,1,4]</code> 中峰值元素的数目为 0 。</p>
|
||||
|
||||
<p>第三个操作:第二个 4 是 <code>[4,1,4,2,1]</code> 中的峰值元素。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>3 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= nums[i] <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= queries.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>queries[i][0] == 1</code> 或者 <code>queries[i][0] == 2</code></li>
|
||||
<li>对于所有的 <code>i</code> ,都有:
|
||||
<ul>
|
||||
<li><code>queries[i][0] == 1</code> :<code>0 <= queries[i][1] <= queries[i][2] <= nums.length - 1</code></li>
|
||||
<li><code>queries[i][0] == 2</code> :<code>0 <= queries[i][1] <= nums.length - 1</code>, <code>1 <= queries[i][2] <= 10<sup>5</sup></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
@@ -0,0 +1,44 @@
|
||||
<p>一个魔法师有许多不同的咒语。</p>
|
||||
|
||||
<p>给你一个数组 <code>power</code> ,其中每个元素表示一个咒语的伤害值,可能会有多个咒语有相同的伤害值。</p>
|
||||
|
||||
<p>已知魔法师使用伤害值为 <code>power[i]</code> 的咒语时,他们就 <strong>不能</strong> 使用伤害为 <code>power[i] - 2</code> ,<code>power[i] - 1</code> ,<code>power[i] + 1</code> 或者 <code>power[i] + 2</code> 的咒语。</p>
|
||||
|
||||
<p>每个咒语最多只能被使用 <strong>一次</strong> 。</p>
|
||||
|
||||
<p>请你返回这个魔法师可以达到的伤害值之和的 <strong>最大值</strong> 。</p>
|
||||
|
||||
<p> </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>可以使用咒语 0,1,3,伤害值分别为 1,1,4,总伤害值为 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>可以使用咒语 1,2,3,伤害值分别为 1,6,6,总伤害值为 13 。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= power.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= power[i] <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,74 @@
|
||||
<p>给你一个长度为 <code>n</code> 的整数数组 <code>nums</code>。</p>
|
||||
|
||||
<p>子数组 <code>nums[l..r]</code>(其中 <code>0 <= l <= r < 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 <= i<sub>1</sub> < i<sub>2</sub> < ... < i<sub>k - 1</sub> < 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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>-10<sup>9</sup> <= nums[i] <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
@@ -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> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= n == nums.length <= 50</code></li>
|
||||
<li><code>n</code> 为偶数。</li>
|
||||
<li><code>1 <= nums[i] <= 50</code></li>
|
||||
</ul>
|
@@ -0,0 +1,40 @@
|
||||
<p>给你一个整数数组 <code>hours</code>,表示以 <strong>小时 </strong>为单位的时间,返回一个整数,表示满足 <code>i < j</code> 且 <code>hours[i] + hours[j]</code> 构成 <strong>整天 </strong>的下标对 <code>i</code>, <code>j</code> 的数目。</p>
|
||||
|
||||
<p><strong>整天 </strong>定义为时间持续时间是 24 小时的 <strong>整数倍 </strong>。</p>
|
||||
|
||||
<p>例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。</p>
|
||||
|
||||
<p> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= hours.length <= 100</code></li>
|
||||
<li><code>1 <= hours[i] <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,40 @@
|
||||
<p>给你一个整数数组 <code>hours</code>,表示以 <strong>小时 </strong>为单位的时间,返回一个整数,表示满足 <code>i < j</code> 且 <code>hours[i] + hours[j]</code> 构成 <strong>整天 </strong>的下标对 <code>i</code>, <code>j</code> 的数目。</p>
|
||||
|
||||
<p><strong>整天 </strong>定义为时间持续时间是 24 小时的 <strong>整数倍 </strong>。</p>
|
||||
|
||||
<p>例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。</p>
|
||||
|
||||
<p> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= hours.length <= 5 * 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= hours[i] <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,39 @@
|
||||
<p>给你一个整数数组 <code>nums</code> 和一个 <strong>非负</strong> 整数 <code>k</code> 。如果一个整数序列 <code>seq</code> 满足在范围下标范围 <code>[0, seq.length - 2]</code> 中存在 <strong>不超过</strong> <code>k</code> 个下标 <code>i</code> 满足 <code>seq[i] != seq[i + 1]</code> ,那么我们称这个整数序列为 <strong>好</strong> 序列。</p>
|
||||
|
||||
<p>请你返回 <code>nums</code> 中 <strong>好</strong> <span data-keyword="subsequence-array">子序列</span> 的最长长度</p>
|
||||
|
||||
<p> </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>最长好子序列为 <code>[<em><strong>1</strong></em>,<em><strong>2</strong></em>,<strong><em>1</em></strong>,<em><strong>1</strong></em>,3]</code> 。</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>最长好子序列为 <code>[<strong><em>1</em></strong>,2,3,4,5,<strong><em>1</em></strong>]</code> 。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 500</code></li>
|
||||
<li><code>1 <= nums[i] <= 10<sup>9</sup></code></li>
|
||||
<li><code>0 <= k <= min(nums.length, 25)</code></li>
|
||||
</ul>
|
@@ -0,0 +1,39 @@
|
||||
<p>给你一个整数数组 <code>nums</code> 和一个 <strong>非负</strong> 整数 <code>k</code> 。如果一个整数序列 <code>seq</code> 满足在范围下标范围 <code>[0, seq.length - 2]</code> 中存在 <strong>不超过</strong> <code>k</code> 个下标 <code>i</code> 满足 <code>seq[i] != seq[i + 1]</code> ,那么我们称这个整数序列为 <strong>好</strong> 序列。</p>
|
||||
|
||||
<p>请你返回 <code>nums</code> 中 <strong>好</strong> <span data-keyword="subsequence-array">子序列</span> 的最长长度</p>
|
||||
|
||||
<p> </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>最长好子序列为 <code>[<em><strong>1</strong></em>,<em><strong>2</strong></em>,<strong><em>1</em></strong>,<em><strong>1</strong></em>,3]</code> 。</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>最长好子序列为 <code>[<strong><em>1</em></strong>,2,3,4,5,<strong><em>1</em></strong>]</code> 。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 5 * 10<sup>3</sup></code></li>
|
||||
<li><code>1 <= nums[i] <= 10<sup>9</sup></code></li>
|
||||
<li><code>0 <= k <= min(50, nums.length)</code></li>
|
||||
</ul>
|
47
leetcode-cn/problem (Chinese)/清除数字 [clear-digits].html
Normal file
47
leetcode-cn/problem (Chinese)/清除数字 [clear-digits].html
Normal file
@@ -0,0 +1,47 @@
|
||||
<p>给你一个字符串 <code>s</code> 。</p>
|
||||
|
||||
<p>你的任务是重复以下操作删除 <strong>所有</strong> 数字字符:</p>
|
||||
|
||||
<ul>
|
||||
<li>删除 <strong>第一个数字字符</strong> 以及它左边 <strong>最近</strong> 的 <strong>非数字</strong> 字符。</li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回删除所有数字字符以后剩下的字符串。</p>
|
||||
|
||||
<p> </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>一开始,我们对 <code>s[2]</code> 执行操作,<code>s</code> 变为 <code>"c4"</code> 。</p>
|
||||
|
||||
<p>然后对 <code>s[1]</code> 执行操作,<code>s</code> 变为 <code>""</code> 。</p>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= s.length <= 100</code></li>
|
||||
<li><code>s</code> 只包含小写英文字母和数字字符。</li>
|
||||
<li>输入保证所有数字都可以按以上操作被删除。</li>
|
||||
</ul>
|
@@ -0,0 +1,94 @@
|
||||
<p>给你一个整数 <code>n</code> 和一个二维数组 <code>requirements</code> ,其中 <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> 中一个下标对 <code>(i, j)</code> 如果满足以下条件,那么它们被称为一个 <strong>逆序对</strong> :</p>
|
||||
|
||||
<ul>
|
||||
<li><code>i < j</code> 且 <code>nums[i] > nums[j]</code></li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回 <code>[0, 1, 2, ..., n - 1]</code> 的 <span data-keyword="permutation">排列</span> <code>perm</code> 的数目,满足对 <strong>所有</strong> 的 <code>requirements[i]</code> 都有 <code>perm[0..end<sub>i</sub>]</code> 恰好有 <code>cnt<sub>i</sub></code> 个逆序对。</p>
|
||||
|
||||
<p>由于答案可能会很大,将它对 <code>10<sup>9</sup> + 7</code> <strong>取余</strong> 后返回。</p>
|
||||
|
||||
<p> </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>前缀 <code>[2, 0, 1]</code> 的逆序对为 <code>(0, 1)</code> 和 <code>(0, 2)</code> 。</li>
|
||||
<li>前缀 <code>[2]</code> 的逆序对数目为 0 个。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><code>[1, 2, 0]</code>
|
||||
<ul>
|
||||
<li>前缀 <code>[1, 2, 0]</code> 的逆序对为 <code>(0, 2)</code> 和 <code>(1, 2)</code> 。</li>
|
||||
<li>前缀 <code>[1]</code> 的逆序对数目为 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>唯一满足要求的排列是 <code>[2, 0, 1]</code> :</p>
|
||||
|
||||
<ul>
|
||||
<li>前缀 <code>[2, 0, 1]</code> 的逆序对为 <code>(0, 1)</code> 和 <code>(0, 2)</code> 。</li>
|
||||
<li>前缀 <code>[2, 0]</code> 的逆序对为 <code>(0, 1)</code> 。</li>
|
||||
<li>前缀 <code>[2]</code> 的逆序对数目为 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>唯一满足要求的排列为 <code>[0, 1]</code> :</p>
|
||||
|
||||
<ul>
|
||||
<li>前缀 <code>[0]</code> 的逆序对数目为 0 。</li>
|
||||
<li>前缀 <code>[0, 1]</code> 的逆序对为 <code>(0, 1)</code> 。</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="gtx-trans" style="position: absolute; left: 198px; top: 756px;">
|
||||
<div class="gtx-trans-icon"> </div>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= n <= 300</code></li>
|
||||
<li><code>1 <= requirements.length <= n</code></li>
|
||||
<li><code>requirements[i] = [end<sub>i</sub>, cnt<sub>i</sub>]</code></li>
|
||||
<li><code>0 <= end<sub>i</sub> <= n - 1</code></li>
|
||||
<li><code>0 <= cnt<sub>i</sub> <= 400</code></li>
|
||||
<li>输入保证至少有一个 <code>i</code> 满足 <code>end<sub>i</sub> == n - 1</code> 。</li>
|
||||
<li>输入保证所有的 <code>end<sub>i</sub></code> 互不相同。</li>
|
||||
</ul>
|
Reference in New Issue
Block a user