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:
zhangbk1
2024-05-16 15:32:41 +08:00
parent 59e97714b1
commit a8fcd060a2
42 changed files with 13163 additions and 8967 deletions

View File

@@ -0,0 +1,92 @@
<p>给你一个长度为 <code>n</code> 的字符串 <code>word</code> 和一个整数 <code>k</code> ,其中 <code>k</code><code>n</code> 的因数。</p>
<p>在一次操作中,你可以选择任意两个下标 <code>i</code><code>j</code>,其中 <code>0 &lt;= i, j &lt; n</code> ,且这两个下标都可以被 <code>k</code> 整除,然后用从 <code>j</code> 开始的长度为 <code>k</code> 的子串替换从 <code>i</code> 开始的长度为 <code>k</code> 的子串。也就是说,将子串 <code>word[i..i + k - 1]</code> 替换为子串 <code>word[j..j + k - 1]</code></p>
<p>返回使 <code>word</code> 成为 <strong>K 周期字符串</strong> 所需的<strong> 最少</strong> 操作次数。</p>
<p>如果存在某个长度为 <code>k</code> 的字符串 <code>s</code>,使得 <code>word</code> 可以表示为任意次数连接 <code>s</code> ,则称字符串 <code>word</code><strong>K 周期字符串</strong> 。例如,如果 <code>word == "ababab"</code>,那么 <code>word</code> 就是 <code>s = "ab"</code> 时的 2 周期字符串 。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block" style="
border-color: var(--border-tertiary);
border-left-width: 2px;
color: var(--text-secondary);
font-size: .875rem;
margin-bottom: 1rem;
margin-top: 1rem;
overflow: visible;
padding-left: 1rem;
">
<p><strong>输入:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
">word = "leetcodeleet", k = 4</span></p>
<p><strong>输出:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
">1</span></p>
<p><strong>解释:</strong>可以选择 i = 4 和 j = 0 获得一个 4 周期字符串。这次操作后word 变为 "leetleetleet" 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block" style="
border-color: var(--border-tertiary);
border-left-width: 2px;
color: var(--text-secondary);
font-size: .875rem;
margin-bottom: 1rem;
margin-top: 1rem;
overflow: visible;
padding-left: 1rem;
">
<p><strong>输入:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
">word = "leetcoleet", k = 2</span></p>
<p><strong>输出:</strong>3</p>
<p><strong>解释:</strong>可以执行以下操作获得一个 2 周期字符串。</p>
<table border="1" bordercolor="#ccc" cellpadding="5" cellspacing="0" height="146" style="border-collapse:collapse; text-align: center; vertical-align: middle;">
<tbody>
<tr>
<th>i</th>
<th>j</th>
<th>word</th>
</tr>
<tr>
<td style="padding: 5px 15px;">0</td>
<td style="padding: 5px 15px;">2</td>
<td style="padding: 5px 15px;">etetcoleet</td>
</tr>
<tr>
<td style="padding: 5px 15px;">4</td>
<td style="padding: 5px 15px;">0</td>
<td style="padding: 5px 15px;">etetetleet</td>
</tr>
<tr>
<td style="padding: 5px 15px;">6</td>
<td style="padding: 5px 15px;">0</td>
<td style="padding: 5px 15px;">etetetetet</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n == word.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= k &lt;= word.length</code></li>
<li><code>k</code> 能整除 <code>word.length</code></li>
<li><code>word</code> 仅由小写英文字母组成。</li>
</ul>

View File

@@ -0,0 +1,48 @@
<p>给你两个字符串 <code>s</code><code>t</code>,每个字符串中的字符都不重复,且 <code>t</code><code>s</code> 的一个排列。</p>
<p><strong>排列差</strong> 定义为 <code>s</code><code>t</code> 中每个字符在两个字符串中位置的绝对差值之和。</p>
<p>返回 <code>s</code><code>t</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">s = "abc", t = "bac"</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>对于 <code>s = "abc"</code><code>t = "bac"</code>,排列差是:</p>
<ul>
<li><code>"a"</code><code>s</code> 中的位置与在 <code>t</code> 中的位置之差的绝对值。</li>
<li><code>"b"</code><code>s</code> 中的位置与在 <code>t</code> 中的位置之差的绝对值。</li>
<li><code>"c"</code><code>s</code> 中的位置与在 <code>t</code> 中的位置之差的绝对值。</li>
</ul>
<p>即,<code>s</code><code>t</code> 的排列差等于 <code>|0 - 1| + |2 - 2| + |1 - 0| = 2</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">s = "abcde", t = "edbac"</span></p>
<p><strong>输出:</strong><span class="example-io">12</span></p>
<p><strong>解释:</strong> <code>s</code><code>t</code> 的排列差等于 <code>|0 - 3| + |1 - 2| + |2 - 4| + |3 - 1| + |4 - 0| = 12</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 26</code></li>
<li>每个字符在 <code>s</code> 中最多出现一次。</li>
<li><code>t</code><code>s</code> 的一个排列。</li>
<li><code>s</code> 仅由小写英文字母组成。</li>
</ul>

View File

@@ -0,0 +1,71 @@
<p>在神秘的地牢中,<code>n</code> 个魔法师站成一排。每个魔法师都拥有一个属性,这个属性可以给你提供能量。有些魔法师可能会给你负能量,即从你身上吸取能量。</p>
<p>你被施加了一种诅咒,当你从魔法师 <code>i</code> 处吸收能量后,你将被立即传送到魔法师 <code>(i + k)</code> 处。这一过程将重复进行,直到你到达一个不存在 <code>(i + k)</code> 的魔法师为止。</p>
<p>换句话说,你将选择一个起点,然后以 <code>k</code> 为间隔跳跃,直到到达魔法师序列的末端,<strong>在过程中吸收所有的能量</strong></p>
<p>给定一个数组 <code>energy</code> 和一个整数<code>k</code>,返回你能获得的<strong> 最大 </strong>能量。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block" style="
border-color: var(--border-tertiary);
border-left-width: 2px;
color: var(--text-secondary);
font-size: .875rem;
margin-bottom: 1rem;
margin-top: 1rem;
overflow: visible;
padding-left: 1rem;
">
<p><strong>输入:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
"> energy = [5,2,-10,-5,1], k = 3</span></p>
<p><strong>输出:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
"> 3</span></p>
<p><strong>解释:</strong>可以从魔法师 1 开始,吸收能量 2 + 1 = 3。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block" style="
border-color: var(--border-tertiary);
border-left-width: 2px;
color: var(--text-secondary);
font-size: .875rem;
margin-bottom: 1rem;
margin-top: 1rem;
overflow: visible;
padding-left: 1rem;
">
<p><strong>输入:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
"> energy = [-2,-3,-1], k = 2</span></p>
<p><strong>输出:</strong><span class="example-io" style="
font-family: Menlo,sans-serif;
font-size: 0.85rem;
"> -1</span></p>
<p><strong>解释:</strong>可以从魔法师 2 开始,吸收能量 -1。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= energy.length &lt;= 10<sup>5</sup></code></li>
<li><code>-1000 &lt;= energy[i] &lt;= 1000</code></li>
<li><code>1 &lt;= k &lt;= energy.length - 1</code></li>
</ul>
<p>&nbsp;</p>

View File

@@ -0,0 +1,86 @@
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;和两个整数&nbsp;<code>cost1</code>&nbsp;<code>cost2</code>&nbsp;。你可以执行以下&nbsp;<strong>任一</strong>&nbsp;操作&nbsp;<strong>任意</strong>&nbsp;次:</p>
<ul>
<li><code>nums</code>&nbsp;中选择下标 <code>i</code>&nbsp;并且将 <code>nums[i]</code>&nbsp;<strong>增加</strong> <code>1</code>&nbsp;,开销为 <code>cost1</code></li>
<li>选择 <code>nums</code>&nbsp;中两个 <strong>不同</strong>&nbsp;下标 <code>i</code>&nbsp;<code>j</code>&nbsp;,并且将 <code>nums[i]</code>&nbsp;<code>nums[j]</code>&nbsp;&nbsp;<strong>增加</strong> <code>1</code>&nbsp;,开销为 <code>cost2</code>&nbsp;</li>
</ul>
<p>你的目标是使数组中所有元素都 <strong>相等</strong>&nbsp;,请你返回需要的 <strong>最小开销</strong>&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>nums = [4,1], cost1 = 5, cost2 = 2</span></p>
<p><span class="example-io"><b>输出:</b>15</span></p>
<p><strong>解释:</strong></p>
<p>执行以下操作可以使数组中所有元素相等:</p>
<ul>
<li>&nbsp;<code>nums[1]</code>&nbsp;增加 1 ,开销为 5 <code>nums</code> 变为&nbsp;<code>[4,2]</code>&nbsp;</li>
<li>&nbsp;<code>nums[1]</code>&nbsp;增加 1 ,开销为 5 <code>nums</code> 变为&nbsp;<code>[4,3]</code>&nbsp;</li>
<li>&nbsp;<code>nums[1]</code>&nbsp;增加 1 ,开销为 5 <code>nums</code> 变为&nbsp;<code>[4,4]</code>&nbsp;</li>
</ul>
<p>总开销为 15 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [2,3,3,3,5], cost1 = 2, cost2 = 1</span></p>
<p><span class="example-io"><b>输出:</b>6</span></p>
<p><b>解释:</b></p>
<p>执行以下操作可以使数组中所有元素相等:</p>
<ul>
<li>&nbsp;<code>nums[0]</code>&nbsp;<code>nums[1]</code>&nbsp;同时增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[3,4,3,3,5]</code>&nbsp;</li>
<li>&nbsp;<code>nums[0]</code>&nbsp;<code>nums[2]</code>&nbsp;同时增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[4,4,4,3,5]</code>&nbsp;</li>
<li>&nbsp;<code>nums[0]</code>&nbsp;<code>nums[3]</code>&nbsp;同时增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[5,4,4,4,5]</code>&nbsp;</li>
<li>&nbsp;<code>nums[1]</code>&nbsp;<code>nums[2]</code>&nbsp;同时增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[5,5,5,4,5]</code>&nbsp;</li>
<li>&nbsp;<code>nums[3]</code>&nbsp;增加 1 ,开销为 2 <code>nums</code> 变为&nbsp;<code>[5,5,5,5,5]</code>&nbsp;</li>
</ul>
<p>总开销为 6 。</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [3,5,3], cost1 = 1, cost2 = 3</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong></p>
<p>执行以下操作可以使数组中所有元素相等:</p>
<ul>
<li>&nbsp;<code>nums[0]</code>&nbsp;增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[4,5,3]</code>&nbsp;</li>
<li>&nbsp;<code>nums[0]</code>&nbsp;增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[5,5,3]</code>&nbsp;</li>
<li>&nbsp;<code>nums[2]</code>&nbsp;增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[5,5,4]</code>&nbsp;</li>
<li>&nbsp;<code>nums[2]</code>&nbsp;增加 1 ,开销为 1 <code>nums</code> 变为&nbsp;<code>[5,5,5]</code>&nbsp;</li>
</ul>
<p>总开销为 4 。</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>6</sup></code></li>
<li><code>1 &lt;= cost1 &lt;= 10<sup>6</sup></code></li>
<li><code>1 &lt;= cost2 &lt;= 10<sup>6</sup></code></li>
</ul>

View File

@@ -0,0 +1,40 @@
<p>给你一个字符串&nbsp;<code>s</code>&nbsp;,你需要将它分割成一个或者更多的&nbsp;<strong>平衡</strong>&nbsp;子字符串。比方说,<code>s == "ababcc"</code>&nbsp;那么&nbsp;<code>("abab", "c", "c")</code>&nbsp;<code>("ab", "abc", "c")</code>&nbsp;&nbsp;<code>("ababcc")</code>&nbsp;都是合法分割,但是&nbsp;<code>("a", <strong>"bab"</strong>, "cc")</code>&nbsp;<code>(<strong>"aba"</strong>, "bc", "c")</code>&nbsp;&nbsp;<code>("ab", <strong>"abcc"</strong>)</code>&nbsp;不是,不平衡的子字符串用粗体表示。</p>
<p>请你返回 <code>s</code>&nbsp;<strong>最少</strong> 能分割成多少个平衡子字符串。</p>
<p><b>注意:</b>一个 <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>s = "fabccddg"</span></p>
<p><span class="example-io"><b>输出:</b>3</span></p>
<p><strong>解释:</strong></p>
<p>我们可以将 <code>s</code>&nbsp;分割成 3 个子字符串:<code>("fab, "ccdd", "g")</code>&nbsp;或者&nbsp;<code>("fabc", "cd", "dg")</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>s = "abababaccddb"</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>我们可以将&nbsp;<code>s</code>&nbsp;分割成 2 个子字符串:<code>("abab", "abaccddb")</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 1000</code></li>
<li><code>s</code>&nbsp;只包含小写英文字母。</li>
</ul>

View File

@@ -0,0 +1,61 @@
<p>给你一个大小为 <code>m x n</code>&nbsp;的二维矩阵&nbsp;<code>grid</code>&nbsp;。你需要判断每一个格子&nbsp;<code>grid[i][j]</code>&nbsp;是否满足:</p>
<ul>
<li>如果它下面的格子存在,那么它需要等于它下面的格子,也就是&nbsp;<code>grid[i][j] == grid[i + 1][j]</code>&nbsp;</li>
<li>如果它右边的格子存在,那么它需要不等于它右边的格子,也就是&nbsp;<code>grid[i][j] != grid[i][j + 1]</code>&nbsp;</li>
</ul>
<p>如果 <strong>所有</strong>&nbsp;格子都满足以上条件,那么返回 <code>true</code>&nbsp;,否则返回 <code>false</code>&nbsp;</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>grid = [[1,0,2],[1,0,2]]</span></p>
<p><span class="example-io"><b>输出:</b>true</span></p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/04/15/examplechanged.png" style="width: 254px; height: 186px;padding: 10px; background: #fff; border-radius: .5rem;" /></strong></p>
<p>网格图中所有格子都符合条件。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>grid = [[1,1,1],[0,0,0]]</span></p>
<p><span class="example-io"><b>输出:</b>false</span></p>
<p><b>解释:</b></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/03/27/example21.png" style="width: 254px; height: 186px;padding: 10px; background: #fff; border-radius: .5rem;" /></strong></p>
<p>同一行中的格子值都相等。</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>grid = [[1],[2],[3]]</span></p>
<p><span class="example-io"><b>输出:</b>false</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/03/31/changed.png" style="width: 86px; height: 277px;padding: 10px; background: #fff; border-radius: .5rem;" /></p>
<p>同一列中的格子值不相等。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n, m &lt;= 10</code></li>
<li><code>0 &lt;= grid[i][j] &lt;= 9</code></li>
</ul>

View File

@@ -0,0 +1,40 @@
<p>给你一个字符串&nbsp;<code>s</code>&nbsp;,它由某个字符串&nbsp;<code>t</code>&nbsp;和若干&nbsp;<code>t</code>&nbsp;&nbsp;<strong>同位字符串</strong>&nbsp;连接而成。</p>
<p>请你返回字符串 <code>t</code>&nbsp;<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>s = "abba"</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>一个可能的字符串&nbsp;<code>t</code>&nbsp;&nbsp;<code>"ba"</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>s = "cdef"</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong></p>
<p>一个可能的字符串&nbsp;<code>t</code>&nbsp;&nbsp;<code>"cdef"</code>&nbsp;,注意&nbsp;<code>t</code>&nbsp;可能等于&nbsp;<code>s</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 10<sup>5</sup></code></li>
<li><code>s</code>&nbsp;只包含小写英文字母。</li>
</ul>

View File

@@ -0,0 +1,50 @@
<p>一个整数 <code>x</code>&nbsp;<strong>强数组</strong>&nbsp;指的是满足和为 <code>x</code> 的二的幂的最短有序数组。比方说11 的强数组为&nbsp;<code>[1, 2, 8]</code>&nbsp;</p>
<p>我们将每一个正整数 <code>i</code>&nbsp;即123等等<strong>强数组</strong>&nbsp;连接得到数组&nbsp;<code>big_nums</code>&nbsp;<code>big_nums</code>&nbsp;开始部分为&nbsp;<code>[<u>1</u>, <u>2</u>, <u>1, 2</u>, <u>4</u>, <u>1, 4</u>, <u>2, 4</u>, <u>1, 2, 4</u>, <u>8</u>, ...]</code>&nbsp;</p>
<p>给你一个二维整数数组&nbsp;<code>queries</code>&nbsp;,其中&nbsp;<code>queries[i] = [from<sub>i</sub>, to<sub>i</sub>, mod<sub>i</sub>]</code>&nbsp;,你需要计算&nbsp;<code>(big_nums[from<sub>i</sub>] * big_nums[from<sub>i</sub> + 1] * ... * big_nums[to<sub>i</sub>]) % mod<sub>i</sub></code>&nbsp;</p>
<p>请你返回一个整数数组&nbsp;<code>answer</code>&nbsp;,其中&nbsp;<code>answer[i]</code>&nbsp;是第 <code>i</code>&nbsp;个查询的答案。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>queries = [[1,3,7]]</span></p>
<p><span class="example-io"><b>输出:</b>[4]</span></p>
<p><strong>解释:</strong></p>
<p>只有一个查询。</p>
<p><code>big_nums[1..3] = [2,1,2]</code>&nbsp;。它们的乘积为 4 4 对 7 取余数得到 4 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>queries = [[2,5,3],[7,7,4]]</span></p>
<p><span class="example-io"><b>输出:</b>[2,2]</span></p>
<p><strong>解释:</strong></p>
<p>有两个查询。</p>
<p>第一个查询:<code>big_nums[2..5] = [1,2,4,1]</code>&nbsp;。它们的乘积为 8 8 对 3 取余数得到 2 。</p>
<p>第二个查询:<code>big_nums[7] = 2</code>&nbsp;2 对 4 取余数得到 2 。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= queries.length &lt;= 500</code></li>
<li><code>queries[i].length == 3</code></li>
<li><code>0 &lt;= queries[i][0] &lt;= queries[i][1] &lt;= 10<sup>15</sup></code></li>
<li><code>1 &lt;= queries[i][2] &lt;= 10<sup>5</sup></code></li>
</ul>

View File

@@ -0,0 +1,44 @@
<p>给你一个数组 <code>nums</code> ,它是 <code>[0, 1, 2, ..., n - 1]</code> 的一个<span data-keyword="permutation">排列</span> 。对于任意一个 <code>[0, 1, 2, ..., n - 1]</code> 的排列 <code>perm</code> ,其 <strong>分数 </strong>定义为:</p>
<p><code>score(perm) = |perm[0] - nums[perm[1]]| + |perm[1] - nums[perm[2]]| + ... + |perm[n - 1] - nums[perm[0]]|</code></p>
<p>返回具有<strong> 最低</strong> 分数的排列 <code>perm</code> 。如果存在多个满足题意且分数相等的排列,则返回其中<span data-keyword="lexicographically-smaller-array">字典序最小</span>的一个。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [1,0,2]</span></p>
<p><strong>输出:</strong><span class="example-io">[0,1,2]</span></p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/04/04/example0gif.gif" style="width: 235px; height: 235px;" /></strong></p>
<p>字典序最小且分数最低的排列是 <code>[0,1,2]</code>。这个排列的分数是 <code>|0 - 0| + |1 - 2| + |2 - 1| = 2</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [0,2,1]</span></p>
<p><strong>输出:</strong><span class="example-io">[0,2,1]</span></p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/04/04/example1gif.gif" style="width: 235px; height: 235px;" /></strong></p>
<p>字典序最小且分数最低的排列是 <code>[0,2,1]</code>。这个排列的分数是 <code>|0 - 1| + |2 - 2| + |1 - 0| = 2</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= n == nums.length &lt;= 14</code></li>
<li><code>nums</code><code>[0, 1, 2, ..., n - 1]</code> 的一个排列。</li>
</ul>

View File

@@ -0,0 +1,64 @@
<p><strong>有效单词</strong> 需要满足以下几个条件:</p>
<ul>
<li><strong>至少 </strong>包含 3 个字符。</li>
<li>由数字 0-9 和英文大小写字母组成。(不必包含所有这类字符。)</li>
<li><strong>至少</strong> 包含一个 <strong>元音字母 </strong></li>
<li><strong>至少</strong> 包含一个 <strong>辅音字母 </strong></li>
</ul>
<p>给你一个字符串 <code>word</code> 。如果 <code>word</code> 是一个有效单词,则返回 <code>true</code> ,否则返回 <code>false</code></p>
<p><strong>注意:</strong></p>
<ul>
<li><code>'a'</code><code>'e'</code><code>'i'</code><code>'o'</code><code>'u'</code> 及其大写形式都属于<strong> 元音字母 </strong></li>
<li>英文中的 <strong>辅音字母 </strong>是指那些除元音字母之外的字母。</li>
</ul>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">word = "234Adas"</span></p>
<p><strong>输出:</strong><span class="example-io">true</span></p>
<p><strong>解释:</strong></p>
<p>这个单词满足所有条件。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">word = "b3"</span></p>
<p><strong>输出:</strong><span class="example-io">false</span></p>
<p><strong>解释:</strong></p>
<p>这个单词的长度少于 3 且没有包含元音字母。</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">word = "a3$e"</span></p>
<p><strong>输出:</strong><span class="example-io">false</span></p>
<p><strong>解释:</strong></p>
<p>这个单词包含了 <code>'$'</code> 字符且没有包含辅音字母。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= word.length &lt;= 20</code></li>
<li><code>word</code> 由英文大写和小写字母、数字、<code>'@'</code><code>'#'</code><code>'$'</code> 组成。</li>
</ul>

View File

@@ -0,0 +1,67 @@
<p>给你一个二维数组&nbsp;<code>points</code>&nbsp;和一个字符串&nbsp;<code>s</code>&nbsp;,其中&nbsp;<code>points[i]</code>&nbsp;表示第 <code>i</code>&nbsp;个点的坐标,<code>s[i]</code>&nbsp;表示第 <code>i</code>&nbsp;个点的 <strong>标签</strong>&nbsp;</p>
<p>如果一个正方形的中心在&nbsp;<code>(0, 0)</code>&nbsp;,所有边都平行于坐标轴,且正方形内&nbsp;<strong></strong>&nbsp;存在标签相同的两个点,那么我们称这个正方形是&nbsp;<strong>合法</strong>&nbsp;的。</p>
<p>请你返回 <strong>合法</strong>&nbsp;正方形中可以包含的 <strong>最多</strong>&nbsp;点数。</p>
<p><strong>注意:</strong></p>
<ul>
<li>如果一个点位于正方形的边上或者在边以内,则认为该点位于正方形内。</li>
<li>正方形的边长可以为零。</li>
</ul>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/03/29/3708-tc1.png" style="width: 303px; height: 303px;" /></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>points = [[2,2],[-1,-2],[-4,4],[-3,1],[3,-3]], s = "abdca"</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>边长为 4 的正方形包含两个点&nbsp;<code>points[0]</code>&nbsp;<code>points[1]</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/03/29/3708-tc2.png" style="width: 302px; height: 302px;" /></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>points = [[1,1],[-2,-2],[-2,2]], s = "abb"</span></p>
<p><span class="example-io"><b>输出:</b>1</span></p>
<p><strong>解释:</strong></p>
<p>边长为 2 的正方形包含 1 个点&nbsp;<code>points[0]</code>&nbsp;</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>points = [[1,1],[-1,-1],[2,-2]], s = "ccd"</span></p>
<p><span class="example-io"><b>输出:</b>0</span></p>
<p><strong>解释:</strong></p>
<p>任何正方形都无法只包含&nbsp;<code>points[0]</code>&nbsp;<code>points[1]</code>&nbsp;中的一个点,所以合法正方形中都不包含任何点。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length, points.length &lt;= 10<sup>5</sup></code></li>
<li><code>points[i].length == 2</code></li>
<li><code>-10<sup>9</sup> &lt;= points[i][0], points[i][1] &lt;= 10<sup>9</sup></code></li>
<li><code>s.length == points.length</code></li>
<li><code>points</code>&nbsp;中的点坐标互不相同。</li>
<li><code>s</code>&nbsp;只包含小写英文字母。</li>
</ul>

View File

@@ -0,0 +1,44 @@
<p>给你一个由 <strong>正整数</strong> 组成、大小为 <code>m x n</code> 的矩阵 <code>grid</code>。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格(不必相邻)。从值为 <code>c1</code> 的单元格移动到值为 <code>c2</code> 的单元格的得分为 <code>c2 - c1</code></p>
<p>你可以从<strong> 任一</strong> 单元格开始,并且必须至少移动一次。</p>
<p>返回你能得到的 <strong>最大 </strong>总得分。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2024/03/14/grid1.png" style="width: 240px; height: 240px;" />
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">grid = [[9,5,7,3],[8,9,6,1],[6,7,14,3],[2,5,3,1]]</span></p>
<p><strong>输出:</strong><span class="example-io">9</span></p>
<p><strong>解释:</strong>从单元格 <code>(0, 1)</code> 开始,并执行以下移动:<br />
- 从单元格 <code>(0, 1)</code> 移动到 <code>(2, 1)</code>,得分为 <code>7 - 5 = 2</code><br />
- 从单元格 <code>(2, 1)</code> 移动到 <code>(2, 2)</code>,得分为 <code>14 - 7 = 7</code><br />
总得分为 <code>2 + 7 = 9</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/04/08/moregridsdrawio-1.png" style="width: 180px; height: 116px;" /></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">grid = [[4,3,2],[3,2,1]]</span></p>
<p><strong>输出:</strong><span class="example-io">-1</span></p>
<p><strong>解释:</strong>从单元格 <code>(0, 0)</code> 开始,执行一次移动:从 <code>(0, 0)</code><code>(0, 1)</code> 。得分为 <code>3 - 4 = -1</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>m == grid.length</code></li>
<li><code>n == grid[i].length</code></li>
<li><code>2 &lt;= m, n &lt;= 1000</code></li>
<li><code>4 &lt;= m * n &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= grid[i][j] &lt;= 10<sup>5</sup></code></li>
</ul>