1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-04 23:11:41 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
This commit is contained in:
2023-08-20 20:47:46 +08:00
parent e171f2875e
commit 3a7fe98f11
73 changed files with 20453 additions and 13579 deletions

View File

@@ -0,0 +1,33 @@
<p>给你两个整数 <code>n</code><code>k</code></p>
<p>对于一个由 <strong>不同</strong> 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 <strong>k-avoiding</strong> 数组。</p>
<p>返回长度为 <code>n</code><strong>k-avoiding</strong> 数组的可能的最小总和。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<strong>输入:</strong>n = 5, k = 4
<strong>输出:</strong>18
<strong>解释:</strong>设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18 。
可以证明不存在总和小于 18 的 k-avoiding 数组。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<strong>输入:</strong>n = 2, k = 6
<strong>输出:</strong>3
<strong>解释:</strong>可以构造数组 [1,2] ,其元素总和为 3 。
可以证明不存在总和小于 3 的 k-avoiding 数组。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n, k &lt;= 50</code></li>
</ul>

View File

@@ -0,0 +1,45 @@
<p>给你一个字符串数组&nbsp;<code>words</code> 和一个字符串 <code>s</code> ,请你判断 <code>s</code> 是不是 <code>words</code><strong>首字母缩略词</strong></p>
<p>如果可以按顺序串联 <code>words</code> 中每个字符串的第一个字符形成字符串 <code>s</code> ,则认为 <code>s</code><code>words</code> 的首字母缩略词。例如,<code>"ab"</code> 可以由 <code>["apple", "banana"]</code> 形成,但是无法从 <code>["bear", "aardvark"]</code> 形成。</p>
<p>如果 <code>s</code><code>words</code> 的首字母缩略词,返回 <code>true</code><em> </em>;否则,返回<em> </em><code>false</code></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<strong>输入:</strong>words = ["alice","bob","charlie"], s = "abc"
<strong>输出:</strong>true
<strong>解释:</strong>words 中 "alice"、"bob" 和 "charlie" 的第一个字符分别是 'a'、'b' 和 'c'。因此s = "abc" 是首字母缩略词。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<strong>输入:</strong>words = ["an","apple"], s = "a"
<strong>输出:</strong>false
<strong>解释:</strong>words 中 "an" 和 "apple" 的第一个字符分别是 'a' 和 'a'。
串联这些字符形成的首字母缩略词是 "aa" 。
因此s = "a" 不是首字母缩略词。
</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<strong>输入:</strong>words = ["never","gonna","give","up","on","you"], s = "ngguoy"
<strong>输出:</strong>true
<strong>解释:</strong>串联数组 words 中每个字符串的第一个字符,得到字符串 "ngguoy" 。
因此s = "ngguoy" 是首字母缩略词。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= words.length &lt;= 100</code></li>
<li><code>1 &lt;= words[i].length &lt;= 10</code></li>
<li><code>1 &lt;= s.length &lt;= 100</code></li>
<li><code>words[i]</code><code>s</code> 由小写英文字母组成</li>
</ul>

View File

@@ -0,0 +1,65 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始长度为 <code>n</code>&nbsp;的整数数组&nbsp;<code>nums</code>&nbsp;<br />
<br />
&nbsp;<code>0</code>&nbsp;&nbsp;<code>n - 1</code>&nbsp;的数字被分为编号从&nbsp;<code>1</code>&nbsp;&nbsp;<code>3</code>&nbsp;的三个组,数字&nbsp;<code>i</code>&nbsp;属于组&nbsp;<code>nums[i]</code>&nbsp;。注意,有的组可能是&nbsp;<strong>空的</strong>&nbsp;<br />
<br />
你可以执行以下操作任意次:</p>
<ul>
<li>选择数字&nbsp;<code>x</code>&nbsp;并改变它的组。更正式的,你可以将&nbsp;<code>nums[x]</code>&nbsp;改为数字&nbsp;<code>1</code>&nbsp;&nbsp;<code>3</code>&nbsp;中的任意一个。</li>
</ul>
<p>你将按照以下过程构建一个新的数组&nbsp;<code>res</code>&nbsp;</p>
<ol>
<li>将每个组中的数字分别排序。</li>
<li>将组&nbsp;<code>1</code>&nbsp;<code>2</code>&nbsp;&nbsp;<code>3</code>&nbsp;中的元素&nbsp;<strong>依次</strong>&nbsp;连接以得到&nbsp;<code>res</code>&nbsp;</li>
</ol>
<p>如果得到的&nbsp;<code>res</code>&nbsp;<strong>非递减</strong>顺序的,那么我们称数组&nbsp;<code>nums</code>&nbsp;<strong>美丽数组</strong>&nbsp;</p>
<p>请你返回将<em>&nbsp;</em><code>nums</code>&nbsp;变为&nbsp;<strong>美丽数组</strong>&nbsp;需要的最少步数。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<b>输入:</b>nums = [2,1,3,2,1]
<b>输出:</b>3
<b>解释:</b>以下三步操作是最优方案:
1. 将 nums[0] 变为 1 。
2. 将 nums[2] 变为 1 。
3. 将 nums[3] 变为 1 。
执行以上操作后,将每组中的数字排序,组 1 为 [0,1,2,3,4] ,组 2 和组 3 都为空。所以 res 等于 [0,1,2,3,4] ,它是非递减顺序的。
三步操作是最少需要的步数。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>nums = [1,3,2,1,3,3]
<b>输出:</b>2
<b>解释:</b>以下两步操作是最优方案:
1. 将 nums[1] 变为 1 。
2. 将 nums[2] 变为 1 。
执行以上操作后,将每组中的数字排序,组 1 为 [0,1,2,3] ,组 2 为空,组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] ,它是非递减顺序的。
两步操作是最少需要的步数。
</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<b>输入:</b>nums = [2,2,2,2,3,3]
<b>输出:</b>0
<b>解释:</b>不需要执行任何操作。
组 1 为空,组 2 为 [0,1,2,3] ,组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] ,它是非递减顺序的。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 100</code></li>
<li><code>1 &lt;= nums[i] &lt;= 3</code></li>
</ul>

View File

@@ -0,0 +1,46 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始的字符串&nbsp;<code>str1</code>&nbsp;<code>str2</code>&nbsp;</p>
<p>一次操作中,你选择&nbsp;<code>str1</code>&nbsp;中的若干下标。对于选中的每一个下标&nbsp;<code>i</code>&nbsp;,你将&nbsp;<code>str1[i]</code>&nbsp;<strong>循环</strong>&nbsp;递增,变成下一个字符。也就是说&nbsp;<code>'a'</code>&nbsp;变成&nbsp;<code>'b'</code>&nbsp;<code>'b'</code> 变成&nbsp;<code>'c'</code>&nbsp;,以此类推,<code>'z'</code> 变成&nbsp;<code>'a'</code>&nbsp;</p>
<p>如果执行以上操作 <strong>至多一次</strong>&nbsp;,可以让 <code>str2</code>&nbsp;成为 <code>str1</code>&nbsp;的子序列,请你返回 <code>true</code>&nbsp;,否则返回 <code>false</code>&nbsp;</p>
<p><b>注意:</b>一个字符串的子序列指的是从原字符串中删除一些(可以一个字符也不删)字符后,剩下字符按照原本先后顺序组成的新字符串。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<b>输入:</b>str1 = "abc", str2 = "ad"
<b>输出:</b>true
<b>解释:</b>选择 str1 中的下标 2 。
将 str1[2] 循环递增,得到 'd' 。
因此str1 变成 "abd" 且 str2 现在是一个子序列。所以返回 true 。</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>str1 = "zc", str2 = "ad"
<b>输出:</b>true
<b>解释:</b>选择 str1 中的下标 0 和 1 。
将 str1[0] 循环递增得到 'a' 。
将 str1[1] 循环递增得到 'd' 。
因此str1 变成 "ad" 且 str2 现在是一个子序列。所以返回 true 。</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<b>输入:</b>str1 = "ab", str2 = "d"
<b>输出:</b>false
<b>解释:</b>这个例子中,没法在执行一次操作的前提下,将 str2 变为 str1 的子序列。
所以返回 false 。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= str1.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= str2.length &lt;= 10<sup>5</sup></code></li>
<li><code>str1</code>&nbsp;&nbsp;<code>str2</code>&nbsp;只包含小写英文字母。</li>
</ul>

View File

@@ -0,0 +1,41 @@
<p>给你一个下标从 <strong>0</strong> 开始的整数数组 <code>nums</code> 和一个整数 <code>k</code></p>
<p>如果子数组中所有元素都相等,则认为子数组是一个 <strong>等值子数组</strong> 。注意,空数组是 <strong>等值子数组</strong></p>
<p><code>nums</code> 中删除最多 <code>k</code> 个元素后,返回可能的最长等值子数组的长度。</p>
<p><strong>子数组</strong> 是数组中一个连续且可能为空的元素序列。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [1,3,2,3,1,3], k = 3
<strong>输出:</strong>3
<strong>解释:</strong>最优的方案是删除下标 2 和下标 4 的元素。
删除后nums 等于 [1, 3, 3, 3] 。
最长等值子数组从 i = 1 开始到 j = 3 结束,长度等于 3 。
可以证明无法创建更长的等值子数组。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [1,1,2,2,1,1], k = 2
<strong>输出:</strong>4
<strong>解释:</strong>最优的方案是删除下标 2 和下标 3 的元素。
删除后nums 等于 [1, 1, 1, 1] 。
数组自身就是等值子数组,长度等于 4 。
可以证明无法创建更长的等值子数组。
</pre>
<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;= nums.length</code></li>
<li><code>0 &lt;= k &lt;= nums.length</code></li>
</ul>

View File

@@ -0,0 +1,51 @@
<p>给你一个长度为 <code>n</code>&nbsp;的正整数数组&nbsp;<code>nums</code>&nbsp;和一个整数 <code>k</code>&nbsp;</p>
<p>一开始,你的分数为 <code>1</code>&nbsp;。你可以进行以下操作至多 <code>k</code>&nbsp;次,目标是使你的分数最大:</p>
<ul>
<li>选择一个之前没有选过的 <strong>非空</strong>&nbsp;子数组&nbsp;<code>nums[l, ..., r]</code>&nbsp;</li>
<li>&nbsp;<code>nums[l, ..., r]</code>&nbsp;里面选择一个 <strong>质数分数</strong>&nbsp;最高的元素 <code>x</code>&nbsp;。如果多个元素质数分数相同且最高,选择下标最小的一个。</li>
<li>将你的分数乘以&nbsp;<code>x</code>&nbsp;</li>
</ul>
<p><code>nums[l, ..., r]</code>&nbsp;表示&nbsp;<code>nums</code>&nbsp;中起始下标为&nbsp;<code>l</code>&nbsp;,结束下标为 <code>r</code>&nbsp;的子数组,两个端点都包含。</p>
<p>一个整数的 <strong>质数分数</strong>&nbsp;等于&nbsp;<code>x</code>&nbsp;不同质因子的数目。比方说,&nbsp;<code>300</code>&nbsp;的质数分数为&nbsp;<code>3</code>&nbsp;,因为&nbsp;<code>300 = 2 * 2 * 3 * 5 * 5</code>&nbsp;</p>
<p>请你返回进行至多 <code>k</code>&nbsp;次操作后,可以得到的 <strong>最大分数</strong>&nbsp;</p>
<p>由于答案可能很大,请你将结果对&nbsp;<code>10<sup>9 </sup>+ 7</code>&nbsp;取余后返回。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<b>输入:</b>nums = [8,3,9,3,8], k = 2
<b>输出:</b>81
<b>解释:</b>进行以下操作可以得到分数 81
- 选择子数组 nums[2, ..., 2] 。nums[2] 是子数组中唯一的元素。所以我们将分数乘以 nums[2] ,分数变为 1 * 9 = 9 。
- 选择子数组 nums[2, ..., 3] 。nums[2] 和 nums[3] 质数分数都为 1 ,但是 nums[2] 下标更小。所以我们将分数乘以 nums[2] ,分数变为 9 * 9 = 81 。
81 是可以得到的最高得分。</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>nums = [19,12,14,6,10,18], k = 3
<b>输出:</b>4788
<b>解释:</b>进行以下操作可以得到分数 4788
- 选择子数组 nums[0, ..., 0] 。nums[0] 是子数组中唯一的元素。所以我们将分数乘以 nums[0] ,分数变为 1 * 19 = 19 。
- 选择子数组 nums[5, ..., 5] 。nums[5] 是子数组中唯一的元素。所以我们将分数乘以 nums[5] ,分数变为 19 * 18 = 342 。
- 选择子数组 nums[2, ..., 3] 。nums[2] 和 nums[3] 质数分数都为 2但是 nums[2] 下标更小。所以我们将分数乘以 nums[2] ,分数变为 342 * 14 = 4788 。
4788 是可以得到的最高的分。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length == n &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= k &lt;= min(n * (n + 1) / 2, 10<sup>9</sup>)</code></li>
</ul>

View File

@@ -0,0 +1,30 @@
<p>给你一个下标从 <strong>0</strong> 开始的整数数组 <code>nums</code> 。请你从 <code>nums</code> 中找出和 <strong>最大</strong> 的一对数,且这两个数数位上最大的数字相等。</p>
<p>返回最大和,如果不存在满足题意的数字对,返回 <code>-1</code><em></em></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>nums = [51,71,17,24,42]
<strong>输出:</strong>88
<strong>解释:</strong>
i = 1 和 j = 2 nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 71 + 17 = 88 。
i = 3 和 j = 4 nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 24 + 42 = 66 。
可以证明不存在其他数对满足数位上最大的数字相等,所以答案是 88 。</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>nums = [1,2,3,4]
<strong>输出:</strong>-1
<strong>解释:</strong>不存在数对满足数位上最大的数字相等。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= nums.length &lt;= 100</code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>4</sup></code></li>
</ul>

View File

@@ -0,0 +1,41 @@
给你一个下标从 <strong>0</strong>&nbsp;开始长度为 <code>n</code>&nbsp;的整数数组&nbsp;<code>nums</code>&nbsp;和一个整数&nbsp;<code>target</code>&nbsp;,请你返回满足&nbsp;<code>0 &lt;= i &lt; j &lt; n</code><code>nums[i] + nums[j] &lt; target</code>&nbsp;的下标对&nbsp;<code>(i, j)</code>&nbsp;的数目。
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<b>输入:</b>nums = [-1,1,2,3,1], target = 2
<b>输出:</b>3
<b>解释:</b>总共有 3 个下标对满足题目描述:
- (0, 1) 0 &lt; 1 且 nums[0] + nums[1] = 0 &lt; target
- (0, 2) 0 &lt; 2 且 nums[0] + nums[2] = 1 &lt; target
- (0, 4) 0 &lt; 4 且 nums[0] + nums[4] = 0 &lt; target
注意 (0, 3) 不计入答案因为 nums[0] + nums[3] 不是严格小于 target 。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>nums = [-6,2,5,-2,-7,-1,3], target = -2
<b>输出:</b>10
<b>解释:</b>总共有 10 个下标对满足题目描述:
- (0, 1) 0 &lt; 1 且 nums[0] + nums[1] = -4 &lt; target
- (0, 3) 0 &lt; 3 且 nums[0] + nums[3] = -8 &lt; target
- (0, 4) 0 &lt; 4 且 nums[0] + nums[4] = -13 &lt; target
- (0, 5) 0 &lt; 5 且 nums[0] + nums[5] = -7 &lt; target
- (0, 6) 0 &lt; 6 且 nums[0] + nums[6] = -3 &lt; target
- (1, 4) 1 &lt; 4 且 nums[1] + nums[4] = -5 &lt; target
- (3, 4) 3 &lt; 4 且 nums[3] + nums[4] = -9 &lt; target
- (3, 5) 3 &lt; 5 且 nums[3] + nums[5] = -3 &lt; target
- (4, 5) 4 &lt; 5 且 nums[4] + nums[5] = -8 &lt; target
- (4, 6) 4 &lt; 6 且 nums[4] + nums[6] = -4 &lt; target
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length == n &lt;= 50</code></li>
<li><code>-50 &lt;= nums[i], target &lt;= 50</code></li>
</ul>

View File

@@ -0,0 +1,30 @@
<p>给你一个 <strong>非空</strong> 链表的头节点 <code>head</code> ,表示一个不含前导零的非负数整数。</p>
<p>将链表 <strong>翻倍</strong> 后,返回头节点<em> </em><code>head</code><em> </em></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/05/28/example.png" style="width: 401px; height: 81px;" />
<pre>
<strong>输入:</strong>head = [1,8,9]
<strong>输出:</strong>[3,7,8]
<strong>解释:</strong>上图中给出的链表,表示数字 189 。返回的链表表示数字 189 * 2 = 378 。</pre>
<p><strong class="example">示例 2</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/05/28/example2.png" style="width: 401px; height: 81px;" />
<pre>
<strong>输入:</strong>head = [9,9,9]
<strong>输出:</strong>[1,9,9,8]
<strong>解释:</strong>上图中给出的链表,表示数字 999 。返回的链表表示数字 999 * 2 = 1998 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li>链表中节点的数目在范围 <code>[1, 10<sup>4</sup>]</code></li>
<li><font face="monospace"><code>0 &lt;= Node.val &lt;= 9</code></font></li>
<li>生成的输入满足:链表表示一个不含前导零的数字,除了数字 <code>0</code> 本身。</li>
</ul>

View File

@@ -0,0 +1,54 @@
<p>给你正整数&nbsp;<code>low</code>&nbsp;<code>high</code>&nbsp;&nbsp;<code>k</code>&nbsp;</p>
<p>如果一个数满足以下两个条件,那么它是 <strong>美丽的</strong>&nbsp;</p>
<ul>
<li>偶数数位的数目与奇数数位的数目相同。</li>
<li>这个整数可以被&nbsp;<code>k</code>&nbsp;整除。</li>
</ul>
<p>请你返回范围&nbsp;<code>[low, high]</code>&nbsp;中美丽整数的数目。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<b>输入:</b>low = 10, high = 20, k = 3
<b>输出:</b>2
<b>解释:</b>给定范围中有 2 个美丽数字:[12,18]
- 12 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 3 整除。
- 18 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 3 整除。
以下是一些不是美丽整数的例子:
- 16 不是美丽整数,因为它不能被 k = 3 整除。
- 15 不是美丽整数,因为它的奇数数位和偶数数位的数目不相等。
给定范围内总共有 2 个美丽整数。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>low = 1, high = 10, k = 1
<b>输出:</b>1
<b>解释:</b>给定范围中有 1 个美丽数字:[10]
- 10 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 1 整除。
给定范围内总共有 1 个美丽整数。
</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<b>输入:</b>low = 5, high = 5, k = 2
<b>输出:</b>0
<b>解释:</b>给定范围中有 0 个美丽数字。
- 5 不是美丽整数,因为它的奇数数位和偶数数位的数目不相等。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt; low &lt;= high &lt;= 10<sup>9</sup></code></li>
<li><code>0 &lt; k &lt;= 20</code></li>
</ul>

View File

@@ -0,0 +1,42 @@
<p>给你一个整数 <code>n</code> 表示数轴上的房屋数量,编号从 <code>0</code><code>n - 1</code></p>
<p>另给你一个二维整数数组 <code>offers</code> ,其中 <code>offers[i] = [start<sub>i</sub>, end<sub>i</sub>, gold<sub>i</sub>]</code> 表示第 <code>i</code> 个买家想要以 <code>gold<sub>i</sub></code> 枚金币的价格购买从 <code>start<sub>i</sub></code><code>end<sub>i</sub></code> 的所有房屋。</p>
<p>作为一名销售,你需要有策略地选择并销售房屋使自己的收入最大化。</p>
<p>返回你可以赚取的金币的最大数目。</p>
<p><strong>注意</strong> 同一所房屋不能卖给不同的买家,并且允许保留一些房屋不进行出售。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<pre>
<strong>输入:</strong>n = 5, offers = [[0,0,1],[0,2,2],[1,3,2]]
<strong>输出:</strong>3
<strong>解释:</strong>
有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。
将位于 [0,0] 范围内的房屋以 1 金币的价格出售给第 1 位买家,并将位于 [1,3] 范围内的房屋以 2 金币的价格出售给第 3 位买家。
可以证明我们最多只能获得 3 枚金币。</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<strong>输入:</strong>n = 5, offers = [[0,0,1],[0,2,10],[1,3,2]]
<strong>输出:</strong>10
<strong>解释:</strong>有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。
将位于 [0,2] 范围内的房屋以 10 金币的价格出售给第 2 位买家。
可以证明我们最多只能获得 10 枚金币。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= offers.length &lt;= 10<sup>5</sup></code></li>
<li><code>offers[i].length == 3</code></li>
<li><code>0 &lt;= start<sub>i</sub> &lt;= end<sub>i</sub> &lt;= n - 1</code></li>
<li><code>1 &lt;= gold<sub>i</sub> &lt;= 10<sup>3</sup></code></li>
</ul>

View File

@@ -0,0 +1,49 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始的整数数组&nbsp;<code>nums</code>&nbsp;和一个整数&nbsp;<code>x</code>&nbsp;</p>
<p>请你找到数组中下标距离至少为 <code>x</code>&nbsp;的两个元素的 <strong>差值绝对值</strong>&nbsp;<strong>最小值</strong>&nbsp;</p>
<p>换言之,请你找到两个下标&nbsp;<code>i</code>&nbsp;<code>j</code>&nbsp;,满足&nbsp;<code>abs(i - j) &gt;= x</code>&nbsp;<code>abs(nums[i] - nums[j])</code>&nbsp;的值最小。</p>
<p>请你返回一个整数,表示下标距离至少为 <code>x</code>&nbsp;的两个元素之间的差值绝对值的 <strong>最小值</strong>&nbsp;</p>
<p>&nbsp;</p>
<p><b>示例 1</b></p>
<pre>
<b>输入:</b>nums = [4,3,2,4], x = 2
<b>输出:</b>0
<b>解释:</b>我们选择 nums[0] = 4 和 nums[3] = 4 。
它们下标距离满足至少为 2 ,差值绝对值为最小值 0 。
0 是最优解。
</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>nums = [5,3,2,10,15], x = 1
<b>输出:</b>1
<b>解释:</b>我们选择 nums[1] = 3 和 nums[2] = 2 。
它们下标距离满足至少为 1 ,差值绝对值为最小值 1 。
1 是最优解。
</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<b>输入:</b>nums = [1,2,3,4], x = 3
<b>输出:</b>3
<strong>解释:</strong>我们选择 nums[0] = 1 和 nums[3] = 4 。
它们下标距离满足至少为 3 ,差值绝对值为最小值 3 。
3 是最优解。
</pre>
<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>0 &lt;= x &lt; nums.length</code></li>
</ul>