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-11 23:36:00 +08:00
parent 4baa9b5a57
commit e171f2875e
131 changed files with 27244 additions and 14500 deletions

View File

@@ -0,0 +1,48 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始长度为 <code>n</code>&nbsp;的数组&nbsp;<code>nums</code>&nbsp;</p>
<p>每一秒,你可以对数组执行以下操作:</p>
<ul>
<li>对于范围在&nbsp;<code>[0, n - 1]</code>&nbsp;内的每一个下标&nbsp;<code>i</code>&nbsp;,将&nbsp;<code>nums[i]</code> 替换成&nbsp;<code>nums[i]</code>&nbsp;<code>nums[(i - 1 + n) % n]</code>&nbsp;或者&nbsp;<code>nums[(i + 1) % n]</code>&nbsp;三者之一。</li>
</ul>
<p><strong>注意</strong>,所有元素会被同时替换。</p>
<p>请你返回将数组 <code>nums</code>&nbsp;中所有元素变成相等元素所需要的 <strong>最少</strong>&nbsp;秒数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>nums = [1,2,1,2]
<b>输出:</b>1
<b>解释:</b>我们可以在 1 秒内将数组变成相等元素:
- 第 1 秒,将每个位置的元素分别变为 [nums[3],nums[1],nums[3],nums[3]] 。变化后nums = [2,2,2,2] 。
1 秒是将数组变成相等元素所需要的最少秒数。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>nums = [2,1,3,3,2]
<b>输出:</b>2
<b>解释:</b>我们可以在 2 秒内将数组变成相等元素:
- 第 1 秒,将每个位置的元素分别变为 [nums[0],nums[2],nums[2],nums[2],nums[3]] 。变化后nums = [2,3,3,3,3] 。
- 第 2 秒,将每个位置的元素分别变为 [nums[1],nums[1],nums[2],nums[3],nums[4]] 。变化后nums = [3,3,3,3,3] 。
2 秒是将数组变成相等元素所需要的最少秒数。
</pre>
<p><strong>示例 3</strong></p>
<pre><b>输入:</b>nums = [5,5,5,5]
<b>输出:</b>0
<b>解释:</b>不需要执行任何操作,因为一开始数组中的元素已经全部相等。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n == nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,43 @@
<p>给你两个长度相等下标从 <strong>0</strong>&nbsp;开始的整数数组&nbsp;<code>nums1</code>&nbsp;<code>nums2</code>&nbsp;。每一秒,对于所有下标&nbsp;<code>0 &lt;= i &lt; nums1.length</code>&nbsp;<code>nums1[i]</code>&nbsp;的值都增加&nbsp;<code>nums2[i]</code>&nbsp;。操作&nbsp;<strong>完成后</strong>&nbsp;,你可以进行如下操作:</p>
<ul>
<li>选择任一满足&nbsp;<code>0 &lt;= i &lt; nums1.length</code>&nbsp;的下标 <code>i</code>&nbsp;,并使&nbsp;<code>nums1[i] = 0</code>&nbsp;</li>
</ul>
<p>同时给你一个整数&nbsp;<code>x</code>&nbsp;</p>
<p>请你返回使&nbsp;<code>nums1</code>&nbsp;中所有元素之和 <strong>小于等于</strong>&nbsp;<code>x</code>&nbsp;所需要的 <strong>最少</strong>&nbsp;时间,如果无法实现,那么返回 <code>-1</code>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<b>输入:</b>nums1 = [1,2,3], nums2 = [1,2,3], x = 4
<b>输出:</b>3
<b>解释:</b>
第 1 秒,我们对 i = 0 进行操作,得到 nums1 = [0,2+2,3+3] = [0,4,6] 。
第 2 秒,我们对 i = 1 进行操作,得到 nums1 = [0+1,0,6+3] = [1,0,9] 。
第 3 秒,我们对 i = 2 进行操作,得到 nums1 = [1+1,0+2,0] = [2,2,0] 。
现在 nums1 的和为 4 。不存在更少次数的操作,所以我们返回 3 。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<b>输入:</b>nums1 = [1,2,3], nums2 = [3,3,3], x = 4
<b>输出:</b>-1
<b>解释:</b>不管如何操作nums1 的和总是会超过 x 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums1.length &lt;= 10<sup>3</sup></code></li>
<li><code>1 &lt;= nums1[i] &lt;= 10<sup>3</sup></code></li>
<li><code>0 &lt;= nums2[i] &lt;= 10<sup>3</sup></code></li>
<li><code>nums1.length == nums2.length</code></li>
<li><code>0 &lt;= x &lt;= 10<sup>6</sup></code></li>
</ul>

View File

@@ -0,0 +1,57 @@
<p>给你一个长度为 <code>n</code> 的数组 <code>nums</code> 和一个整数 <code>m</code> 。请你判断能否执行一系列操作,将数组拆分成 <code>n</code><strong>非空 </strong>数组。</p>
<p>在每一步操作中,你可以选择一个 <strong>长度至少为 2</strong> 的现有数组(之前步骤的结果) 并将其拆分成 <strong>2</strong> 个子数组,而得到的 <strong>每个</strong> 子数组,<strong>至少</strong> 需要满足以下条件之一:</p>
<ul>
<li>子数组的长度为 1 ,或者</li>
<li>子数组元素之和 <strong>大于或等于</strong>&nbsp; <code>m</code></li>
</ul>
<p>如果你可以将给定数组拆分成 <code>n</code> 个满足要求的数组,返回 <code>true</code><em> </em>;否则,返回 <code>false</code></p>
<p><strong>注意:</strong>子数组是数组中的一个连续非空元素序列。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [2, 2, 1], m = 4
<strong>输出:</strong>true
<strong>解释:</strong>
第 1 步,将数组 nums 拆分成 [2, 2] 和 [1] 。
第 2 步,将数组 [2, 2] 拆分成 [2] 和 [2] 。
因此,答案为 true 。</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [2, 1, 3], m = 5
<strong>输出:</strong>false
<strong>解释:
</strong>存在两种不同的拆分方法:
第 1 种,将数组 nums 拆分成 [2, 1] 和 [3] 。
第 2 种,将数组 nums 拆分成 [2] 和 [1, 3] 。
然而,这两种方法都不满足题意。因此,答案为 false 。</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>nums = [2, 3, 3, 2, 3], m = 6
<strong>输出:</strong>true
<strong>解释:</strong>
第 1 步,将数组 nums 拆分成 [2, 3, 3, 2] 和 [3] 。
第 2 步,将数组 [2, 3, 3, 2] 拆分成 [2, 3, 3] 和 [2] 。
第 3 步,将数组 [2, 3, 3] 拆分成 [2] 和 [3, 3] 。
第 4 步,将数组 [3, 3] 拆分成 [3] 和 [3] 。
因此,答案为 true 。 </pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n == nums.length &lt;= 100</code></li>
<li><code>1 &lt;= nums[i] &lt;= 100</code></li>
<li><code>1 &lt;= m &lt;= 200</code></li>
</ul>

View File

@@ -0,0 +1,35 @@
给你三个字符串&nbsp;<code>a</code>&nbsp;<code>b</code>&nbsp;&nbsp;<code>c</code>&nbsp; 你的任务是找到长度&nbsp;<strong>最短</strong>&nbsp;的字符串,且这三个字符串都是它的 <strong>子字符串</strong>&nbsp;
<p>如果有多个这样的字符串,请你返回 <strong>字典序最小</strong>&nbsp;的一个。</p>
<p>请你返回满足题目要求的字符串。</p>
<p><strong>注意:</strong></p>
<ul>
<li>两个长度相同的字符串 <code>a</code>&nbsp;<code>b</code>&nbsp;,如果在第一个不相同的字符处,<code>a</code>&nbsp;的字母在字母表中比 <code>b</code>&nbsp;的字母 <strong>靠前</strong>&nbsp;,那么字符串&nbsp;<code>a</code>&nbsp;比字符串&nbsp;<code>b</code> <strong>字典序小</strong>&nbsp;</li>
<li><strong>子字符串</strong>&nbsp;是一个字符串中一段连续的字符序列。</li>
</ul>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><code><span style=""><b>输入:</b></span>a</code> = "abc", <code>b</code> = "bca", <code>c</code> = "aaa"
<b>输出:</b>"aaabca"
<b>解释:</b>字符串 "aaabca" 包含所有三个字符串a = ans[2...4] b = ans[3..5] c = ans[0..2] 。结果字符串的长度至少为 6 ,且"aaabca" 是字典序最小的一个。</pre>
<p><strong>示例 2</strong></p>
<pre><code><span style=""><b>输入:</b></span>a</code> = "ab", <code>b</code> = "ba", <code>c</code> = "aba"
<b>输出:</b>"aba"
<strong>解释:</strong>字符串 "aba" 包含所有三个字符串a = ans[0..1] b = ans[1..2] c = ans[0..2] 。由于 c 的长度为 3 ,结果字符串的长度至少为 3 。"aba" 是字典序最小的一个。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= a.length, b.length, c.length &lt;= 100</code></li>
<li><code>a</code>&nbsp;<code>b</code>&nbsp;<code>c</code>&nbsp;只包含小写英文字母。</li>
</ul>

View File

@@ -0,0 +1,36 @@
<p>一开始,你的银行账户里有&nbsp;<code>100</code>&nbsp;块钱。</p>
<p>给你一个整数<code>purchaseAmount</code>&nbsp;,它表示你在一次购买中愿意支出的金额。</p>
<p>在一个商店里,你进行一次购买,实际支出的金额会向 <strong>最近</strong>&nbsp;&nbsp;<code>10</code>&nbsp;<strong>倍数</strong>&nbsp;取整。换句话说,你实际会支付一个&nbsp;<strong>非负</strong>&nbsp;金额&nbsp;<code>roundedAmount</code>&nbsp;,满足&nbsp;<code>roundedAmount</code>&nbsp;&nbsp;<code>10</code>&nbsp;的倍数且&nbsp;<code>abs(roundedAmount - purchaseAmount)</code>&nbsp;的值 <strong>最小</strong>&nbsp;</p>
<p>如果存在多于一个最接近的 <code>10</code>&nbsp;的倍数,<strong>较大的倍数</strong>&nbsp;是你的实际支出金额。</p>
<p>请你返回一个整数,表示你在愿意支出金额为<em>&nbsp;</em><code>purchaseAmount</code><em>&nbsp;</em>块钱的前提下,购买之后剩下的余额。</p>
<p><strong>注意:</strong> <code>0</code>&nbsp;也是&nbsp;<code>10</code>&nbsp;的倍数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>purchaseAmount = 9
<b>输出:</b>90
<b>解释:</b>这个例子中,最接近 9 的 10 的倍数是 10 。所以你的账户余额为 100 - 10 = 90 。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>purchaseAmount = 15
<b>输出:</b>80
<b>解释:</b>这个例子中,有 2 个最接近 15 的 10 的倍数10 和 20较大的数 20 是你的实际开销。
所以你的账户余额为 100 - 20 = 80 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt;= purchaseAmount &lt;= 100</code></li>
</ul>

View File

@@ -0,0 +1,41 @@
<p>给你一个下标从 <strong>0</strong> 开始、由正整数组成的数组 <code>nums</code></p>
<p>你可以在数组上执行下述操作 <strong>任意</strong> 次:</p>
<ul>
<li>选中一个同时满足&nbsp;<code>0 &lt;= i &lt; nums.length - 1</code><code>nums[i] &lt;= nums[i + 1]</code> 的整数 <code>i</code> 。将元素 <code>nums[i + 1]</code> 替换为 <code>nums[i] + nums[i + 1]</code> ,并从数组中删除元素 <code>nums[i]</code></li>
</ul>
<p>返回你可以从最终数组中获得的 <strong>最大</strong> 元素的值。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>nums = [2,3,7,9,3]
<strong>输出:</strong>21
<strong>解释:</strong>我们可以在数组上执行下述操作:
- 选中 i = 0 ,得到数组 nums = [<strong><em>5</em></strong>,7,9,3] 。
- 选中 i = 1 ,得到数组 nums = [5,<em><strong>16</strong></em>,3] 。
- 选中 i = 0 ,得到数组 nums = [<em><strong>21</strong></em>,3] 。
最终数组中的最大元素是 21 。可以证明我们无法获得更大的元素。
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>nums = [5,3,3]
<strong>输出:</strong>11
<strong>解释:</strong>我们可以在数组上执行下述操作:
- 选中 i = 1 ,得到数组 nums = [5,<em><strong>6</strong></em>] 。
- 选中 i = 0 ,得到数组 nums = [<em><strong>11</strong></em>] 。
最终数组中只有一个元素,即 11 。
</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>6</sup></code></li>
</ul>

View File

@@ -0,0 +1,41 @@
<p>给你一个链表的头&nbsp;<code>head</code>&nbsp;,每个结点包含一个整数值。</p>
<p>在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 <strong>最大公约数</strong>&nbsp;</p>
<p>请你返回插入之后的链表。</p>
<p>两个数的 <strong>最大公约数</strong>&nbsp;是可以被两个数字整除的最大正整数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2023/07/18/ex1_copy.png" style="width: 641px; height: 181px;"></p>
<pre><b>输入:</b>head = [18,6,10,3]
<b>输出:</b>[18,6,6,2,10,1,3]
<b>解释:</b>第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。
- 18 和 6 的最大公约数为 6 ,插入第一和第二个结点之间。
- 6 和 10 的最大公约数为 2 ,插入第二和第三个结点之间。
- 10 和 3 的最大公约数为 1 ,插入第三和第四个结点之间。
所有相邻结点之间都插入完毕,返回链表。
</pre>
<p><strong>示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2023/07/18/ex2_copy1.png" style="width: 51px; height: 191px;"></p>
<pre><b>输入:</b>head = [7]
<strong>输出:</strong>[7]
<b>解释:</b>第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。
没有相邻结点,所以返回初始链表。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li>链表中结点数目在&nbsp;<code>[1, 5000]</code> 之间。</li>
<li><code>1 &lt;= Node.val &lt;= 1000</code></li>
</ul>

View File

@@ -0,0 +1,61 @@
<p>给你一个长度为 <code>n</code> 的二维整数数组 <code>items</code> 和一个整数 <code>k</code></p>
<p><code>items[i] = [profit<sub>i</sub>, category<sub>i</sub>]</code>,其中 <code>profit<sub>i</sub></code><code>category<sub>i</sub></code> 分别表示第 <code>i</code> 个项目的利润和类别。</p>
<p>现定义&nbsp;<code>items</code><strong>子序列</strong><strong>优雅度</strong> 可以用 <code>total_profit + distinct_categories<sup>2</sup></code> 计算,其中 <code>total_profit</code> 是子序列中所有项目的利润总和,<code>distinct_categories</code> 是所选子序列所含的所有类别中不同类别的数量。</p>
<p>你的任务是从 <code>items</code> 所有长度为 <code>k</code> 的子序列中,找出 <strong>最大优雅度</strong></p>
<p>用整数形式表示并返回 <code>items</code> 中所有长度恰好为 <code>k</code> 的子序列的最大优雅度。</p>
<p><strong>注意:</strong>数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>items = [[3,2],[5,1],[10,1]], k = 2
<strong>输出:</strong>17
<strong>解释:
</strong>在这个例子中,我们需要选出长度为 2 的子序列。
其中一种方案是 items[0] = [3,2] 和 items[2] = [10,1] 。
子序列的总利润为 3 + 10 = 13 ,子序列包含 2 种不同类别 [2,1] 。
因此,优雅度为 13 + 2<sup>2</sup> = 17 ,可以证明 17 是可以获得的最大优雅度。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>items = [[3,1],[3,1],[2,2],[5,3]], k = 3
<strong>输出:</strong>19
<strong>解释:</strong>
在这个例子中,我们需要选出长度为 3 的子序列。
其中一种方案是 items[0] = [3,1] items[2] = [2,2] 和 items[3] = [5,3] 。
子序列的总利润为 3 + 2 + 5 = 10 ,子序列包含 3 种不同类别 [1, 2, 3] 。
因此,优雅度为 10 + 3<sup>2</sup> = 19 ,可以证明 19 是可以获得的最大优雅度。</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>items = [[1,1],[2,1],[3,1]], k = 3
<strong>输出:</strong>7
<strong>解释:
</strong>在这个例子中,我们需要选出长度为 3 的子序列。
我们需要选中所有项目。
子序列的总利润为 1 + 2 + 3 = 6子序列包含 1 种不同类别 [1] 。
因此,最大优雅度为 6 + 1<sup>2</sup> = 7 。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= items.length == n &lt;= 10<sup>5</sup></code></li>
<li><code>items[i].length == 2</code></li>
<li><code>items[i][0] == profit<sub>i</sub></code></li>
<li><code>items[i][1] == category<sub>i</sub></code></li>
<li><code>1 &lt;= profit<sub>i</sub> &lt;= 10<sup>9</sup></code></li>
<li><code>1 &lt;= category<sub>i</sub> &lt;= n </code></li>
<li><code>1 &lt;= k &lt;= n</code></li>
</ul>

View File

@@ -0,0 +1,35 @@
<p>给你两个 <strong></strong>&nbsp;整数&nbsp;<code>n</code>&nbsp;<code>x</code>&nbsp;</p>
<p>请你返回将<em>&nbsp;</em><code>n</code>&nbsp;表示成一些&nbsp;<strong>互不相同</strong>&nbsp;正整数的<em>&nbsp;</em><code>x</code>&nbsp;次幂之和的方案数。换句话说,你需要返回互不相同整数&nbsp;<code>[n<sub>1</sub>, n<sub>2</sub>, ..., n<sub>k</sub>]</code>&nbsp;的集合数目,满足&nbsp;<code>n = n<sub>1</sub><sup>x</sup> + n<sub>2</sub><sup>x</sup> + ... + n<sub>k</sub><sup>x</sup></code>&nbsp;</p>
<p>由于答案可能非常大,请你将它对&nbsp;<code>10<sup>9</sup> + 7</code>&nbsp;取余后返回。</p>
<p>比方说,<code>n = 160</code>&nbsp;<code>x = 3</code>&nbsp;,一个表示&nbsp;<code>n</code>&nbsp;的方法是&nbsp;<code>n = 2<sup>3</sup> + 3<sup>3</sup> + 5<sup>3</sup></code><sup>&nbsp;</sup></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>n = 10, x = 2
<b>输出:</b>1
<b>解释:</b>我们可以将 n 表示为n = 3<sup>2</sup> + 1<sup>2</sup> = 10 。
这是唯一将 10 表达成不同整数 2 次方之和的方案。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>n = 4, x = 1
<b>输出:</b>2
<b>解释:</b>我们可以将 n 按以下方案表示:
- n = 4<sup>1</sup> = 4 。
- n = 3<sup>1</sup> + 1<sup>1</sup> = 4 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 300</code></li>
<li><code>1 &lt;= x &lt;= 5</code></li>
</ul>

View File

@@ -0,0 +1,37 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始的字符串&nbsp;<code>s</code>&nbsp;,将&nbsp;<code>s</code>&nbsp;中的元素重新 <b>排列</b>&nbsp;得到新的字符串&nbsp;<code>t</code>&nbsp;,它满足:</p>
<ul>
<li>所有辅音字母都在原来的位置上。更正式的,如果满足&nbsp;<code>0 &lt;= i &lt; s.length</code>&nbsp;的下标 <code>i</code>&nbsp;处的&nbsp;<code>s[i]</code>&nbsp;是个辅音字母,那么&nbsp;<code>t[i] = s[i]</code>&nbsp;</li>
<li>元音字母都必须以他们的 <strong>ASCII</strong>&nbsp;值按 <strong>非递减</strong>&nbsp;顺序排列。更正式的,对于满足&nbsp;<code>0 &lt;= i &lt; j &lt; s.length</code>&nbsp;的下标 <code>i</code>&nbsp;<code>j</code>&nbsp; ,如果&nbsp;<code>s[i]</code>&nbsp;<code>s[j]</code>&nbsp;都是元音字母,那么&nbsp;<code>t[i]</code>&nbsp;的 ASCII 值不能大于&nbsp;<code>t[j]</code>&nbsp;的 ASCII 值。</li>
</ul>
<p>请你返回结果字母串。</p>
<p>元音字母为&nbsp;<code>'a'</code>&nbsp;<code>'e'</code>&nbsp;<code>'i'</code>&nbsp;<code>'o'</code>&nbsp;&nbsp;<code>'u'</code>&nbsp;,它们可能是小写字母也可能是大写字母,辅音字母是除了这 5 个字母以外的所有字母。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<b>输入:</b>s = "lEetcOde"
<b>输出:</b>"lEOtcede"
<b>解释:</b>'E' 'O' 和 'e' 是 s 中的元音字母,'l' 't' 'c' 和 'd' 是所有的辅音。将元音字母按照 ASCII 值排序,辅音字母留在原地。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<b>输入:</b>s = "lYmpH"
<b>输出:</b>"lYmpH"
<b>解释:</b>s 中没有元音字母s 中都为辅音字母),所以我们返回 "lYmpH" 。
</pre>
<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;只包含英语字母表中的 <strong>大写&nbsp;</strong><strong>小写&nbsp;</strong>字母。</li>
</ul>

View File

@@ -0,0 +1,59 @@
<p>给你一个下标从 <strong>0</strong> 开始、大小为 <code>n x n</code> 的二维矩阵 <code>grid</code> ,其中 <code>(r, c)</code> 表示:</p>
<ul>
<li>如果 <code>grid[r][c] = 1</code> ,则表示一个存在小偷的单元格</li>
<li>如果 <code>grid[r][c] = 0</code> ,则表示一个空单元格</li>
</ul>
<p>你最开始位于单元格 <code>(0, 0)</code> 。在一步移动中,你可以移动到矩阵中的任一相邻单元格,包括存在小偷的单元格。</p>
<p>矩阵中路径的 <strong>安全系数</strong> 定义为:从路径中任一单元格到矩阵中任一小偷所在单元格的 <strong>最小</strong> 曼哈顿距离。</p>
<p>返回所有通向单元格<em> </em><code>(n - 1, n - 1)</code> 的路径中的 <strong>最大安全系数</strong></p>
<p>单元格 <code>(r, c)</code> 的某个 <strong>相邻</strong> 单元格,是指在矩阵中存在的 <code>(r, c + 1)</code><code>(r, c - 1)</code><code>(r + 1, c)</code><code>(r - 1, c)</code> 之一。</p>
<p>两个单元格 <code>(a, b)</code><code>(x, y)</code> 之间的 <strong>曼哈顿距离</strong> 等于 <code>| a - x | + | b - y |</code> ,其中 <code>|val|</code> 表示 <code>val</code> 的绝对值。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/07/02/example1.png" style="width: 362px; height: 242px;" />
<pre>
<strong>输入:</strong>grid = [[1,0,0],[0,0,0],[0,0,1]]
<strong>输出:</strong>0
<strong>解释:</strong>从 (0, 0) 到 (n - 1, n - 1) 的每条路径都经过存在小偷的单元格 (0, 0) 和 (n - 1, n - 1) 。
</pre>
<p><strong>示例 2</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/07/02/example2.png" style="width: 362px; height: 242px;" />
<pre>
<strong>输入:</strong>grid = [[0,0,1],[0,0,0],[0,0,0]]
<strong>输出:</strong>2
<strong>解释:</strong>
上图所示路径的安全系数为 2
- 该路径上距离小偷所在单元格02最近的单元格是00。它们之间的曼哈顿距离为 | 0 - 0 | + | 0 - 2 | = 2 。
可以证明,不存在安全系数更高的其他路径。
</pre>
<p><strong>示例 3</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2023/07/02/example3.png" style="width: 362px; height: 242px;" />
<pre>
<strong>输入:</strong>grid = [[0,0,0,1],[0,0,0,0],[0,0,0,0],[1,0,0,0]]
<strong>输出:</strong>2
<strong>解释:</strong>
上图所示路径的安全系数为 2
- 该路径上距离小偷所在单元格03最近的单元格是12。它们之间的曼哈顿距离为 | 0 - 1 | + | 3 - 2 | = 2 。
- 该路径上距离小偷所在单元格30最近的单元格是32。它们之间的曼哈顿距离为 | 3 - 3 | + | 0 - 2 | = 2 。
可以证明,不存在安全系数更高的其他路径。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= grid.length == n &lt;= 400</code></li>
<li><code>grid[i].length == n</code></li>
<li><code>grid[i][j]</code><code>0</code><code>1</code></li>
<li><code>grid</code> 至少存在一个小偷</li>
</ul>

View File

@@ -0,0 +1,57 @@
<p>给你一个字符串数组 <code>words</code> 和一个字符 <code>separator</code> ,请你按 <code>separator</code> 拆分 <code>words</code> 中的每个字符串。</p>
<p>返回一个由拆分后的新字符串组成的字符串数组,<strong>不包括空字符串</strong></p>
<p><strong>注意</strong></p>
<ul>
<li><code>separator</code> 用于决定拆分发生的位置,但它不包含在结果字符串中。</li>
<li>拆分可能形成两个以上的字符串。</li>
<li>结果字符串必须保持初始相同的先后顺序。</li>
</ul>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>words = ["one.two.three","four.five","six"], separator = "."
<strong>输出:</strong>["one","two","three","four","five","six"]
<strong>解释:</strong>在本示例中,我们进行下述拆分:
"one.two.three" 拆分为 "one", "two", "three"
"four.five" 拆分为 "four", "five"
"six" 拆分为 "six"
因此,结果数组为 ["one","two","three","four","five","six"] 。</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>words = ["$easy$","$problem$"], separator = "$"
<strong>输出:</strong>["easy","problem"]
<strong>解释:</strong>在本示例中,我们进行下述拆分:
"$easy$" 拆分为 "easy"(不包括空字符串)
"$problem$" 拆分为 "problem"(不包括空字符串)
因此,结果数组为 ["easy","problem"] 。
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>words = ["|||"], separator = "|"
<strong>输出:</strong>[]
<strong>解释:</strong>在本示例中,"|||" 的拆分结果将只包含一些空字符串,所以我们返回一个空数组 [] 。 </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;= 20</code></li>
<li><code>words[i]</code> 中的字符要么是小写英文字母,要么就是字符串 <code>".,|$#@"</code> 中的字符(不包括引号)</li>
<li><code>separator</code> 是字符串 <code>".,|$#@"</code> 中的某个字符(不包括引号)</li>
</ul>

View File

@@ -0,0 +1,46 @@
<p>你的笔记本键盘存在故障,每当你在上面输入字符 <code>'i'</code> 时,它会反转你所写的字符串。而输入其他字符则可以正常工作。</p>
<p>给你一个下标从 <strong>0</strong> 开始的字符串 <code>s</code> ,请你用故障键盘依次输入每个字符。</p>
<p>返回最终笔记本屏幕上输出的字符串。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>s = "string"
<strong>输出:</strong>"rtsng"
<strong>解释:</strong>
输入第 1 个字符后,屏幕上的文本是:"s" 。
输入第 2 个字符后,屏幕上的文本是:"st" 。
输入第 3 个字符后,屏幕上的文本是:"str" 。
因为第 4 个字符是 'i' ,屏幕上的文本被反转,变成 "rts" 。
输入第 5 个字符后,屏幕上的文本是:"rtsn" 。
输入第 6 个字符后,屏幕上的文本是: "rtsng" 。
因此,返回 "rtsng" 。
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>s = "poiinter"
<strong>输出:</strong>"ponter"
<strong>解释:</strong>
输入第 1 个字符后,屏幕上的文本是:"p" 。
输入第 2 个字符后,屏幕上的文本是:"po" 。
因为第 3 个字符是 'i' ,屏幕上的文本被反转,变成 "op" 。
因为第 4 个字符是 'i' ,屏幕上的文本被反转,变成 "po" 。
输入第 5 个字符后,屏幕上的文本是:"pon" 。
输入第 6 个字符后,屏幕上的文本是:"pont" 。
输入第 7 个字符后,屏幕上的文本是:"ponte" 。
输入第 8 个字符后,屏幕上的文本是:"ponter" 。
因此,返回 "ponter" 。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 100</code></li>
<li><code>s</code> 由小写英文字母组成</li>
<li><code>s[0] != 'i'</code></li>
</ul>

View File

@@ -0,0 +1,44 @@
<p>给你一棵 <strong></strong>(即,一个连通、无向且无环的图),<strong></strong> 节点为 <code>0</code> ,由编号从 <code>0</code><code>n - 1</code><code>n</code> 个节点组成。这棵树用一个长度为 <code>n</code> 、下标从 <strong>0</strong> 开始的数组 <code>parent</code> 表示,其中 <code>parent[i]</code> 为节点 <code>i</code> 的父节点,由于节点 <code>0</code> 为根节点,所以 <code>parent[0] == -1</code></p>
<p>另给你一个长度为 <code>n</code> 的字符串 <code>s</code> ,其中 <code>s[i]</code> 是分配给 <code>i</code><code>parent[i]</code> 之间的边的字符。<code>s[0]</code> 可以忽略。</p>
<p>找出满足 <code>u &lt; v</code> ,且从 <code>u</code><code>v</code> 的路径上分配的字符可以 <strong>重新排列</strong> 形成 <strong>回文</strong> 的所有节点对&nbsp;<code>(u, v)</code> ,并返回节点对的数目。</p>
<p>如果一个字符串正着读和反着读都相同,那么这个字符串就是一个 <strong>回文</strong></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2023/07/15/treedrawio-8drawio.png" style="width: 281px; height: 181px;" /></p>
<pre>
<strong>输入:</strong>parent = [-1,0,0,1,1,2], s = "acaabc"
<strong>输出:</strong>8
<strong>解释:</strong>符合题目要求的节点对分别是:
- (0,1)、(0,2)、(1,3)、(1,4) 和 (2,5) ,路径上只有一个字符,满足回文定义。
- (2,3),路径上字符形成的字符串是 "aca" ,满足回文定义。
- (1,5),路径上字符形成的字符串是 "cac" ,满足回文定义。
- (3,5),路径上字符形成的字符串是 "acac" ,可以重排形成回文 "acca" 。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>parent = [-1,0,0,0,0], s = "aaaaa"
<strong>输出:</strong>10
<strong>解释:</strong>任何满足 u &lt; v 的节点对 (u,v) 都符合题目要求。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>n == parent.length == s.length</code></li>
<li><code>1 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li>对于所有 <code>i &gt;= 1</code> <code>0 &lt;= parent[i] &lt;= n - 1</code> 均成立</li>
<li><code>parent[0] == -1</code></li>
<li><code>parent</code> 表示一棵有效的树</li>
<li><code>s</code> 仅由小写英文字母组成</li>
</ul>

View File

@@ -0,0 +1,44 @@
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;,如果它是数组&nbsp;<code>base[n]</code>&nbsp;的一个排列,我们称它是个&nbsp;<strong></strong>&nbsp;数组。</p>
<p><code>base[n] = [1, 2, ..., n - 1, n, n]</code>&nbsp;(换句话说,它是一个长度为 <code>n + 1</code>&nbsp;且包含&nbsp;<code>1</code>&nbsp;&nbsp;<code>n - 1</code>&nbsp;恰好各一次,包含 <code>n</code>&nbsp; 两次的一个数组)。比方说,<code>base[1] = [1, 1]</code>&nbsp;<code>base[3] = [1, 2, 3, 3]</code>&nbsp;</p>
<p>如果数组是一个好数组,请你返回&nbsp;<code>true</code>&nbsp;,否则返回&nbsp;<code>false</code>&nbsp;</p>
<p><strong>注意:</strong>数组的排列是这些数字按任意顺序排布后重新得到的数组。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>nums = [2, 1, 3]
<b>输出:</b>false
<b>解释:</b>因为数组的最大元素是 3 ,唯一可以构成这个数组的 base[n] 对应的 n = 3 。但是 base[3] 有 4 个元素,但数组 nums 只有 3 个元素,所以无法得到 base[3] = [1, 2, 3, 3] 的排列,所以答案为 false 。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>nums = [1, 3, 3, 2]
<b>输出:</b>true
<b>解释:因为</b>数组的最大元素是 3 ,唯一可以构成这个数组的 base[n] 对应的 n = 3 ,可以看出数组是 base[3] = [1, 2, 3, 3] 的一个排列(交换 nums 中第二个和第四个元素)。所以答案为 true 。</pre>
<p><strong>示例 3</strong></p>
<pre><b>输入:</b>nums = [1, 1]
<b>输出:</b>true
<b>解释:</b>因为数组的最大元素是 1 ,唯一可以构成这个数组的 base[n] 对应的 n = 1可以看出数组是 base[1] = [1, 1] 的一个排列。所以答案为 true 。</pre>
<p><strong>示例 4</strong></p>
<pre><b>输入:</b>nums = [3, 4, 4, 1, 2, 1]
<b>输出:</b>false
<b>解释:</b>因为数组的最大元素是 4 ,唯一可以构成这个数组的 base[n] 对应的 n = 4 。但是 base[n] 有 5 个元素而 nums 有 6 个元素。所以答案为 false 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 100</code></li>
<li><code>1 &lt;= num[i] &lt;= 200</code></li>
</ul>

View File

@@ -0,0 +1,39 @@
<p>公司里共有 <code>n</code> 名员工,按从 <code>0</code><code>n - 1</code> 编号。每个员工 <code>i</code> 已经在公司工作了 <code>hours[i]</code> 小时。</p>
<p>公司要求每位员工工作&nbsp;<strong>至少</strong> <code>target</code> 小时。</p>
<p>给你一个下标从 <strong>0</strong> 开始、长度为 <code>n</code> 的非负整数数组 <code>hours</code> 和一个非负整数 <code>target</code></p>
<p>请你用整数表示并返回工作至少 <code>target</code> 小时的员工数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>hours = [0,1,2,3,4], target = 2
<strong>输出:</strong>3
<strong>解释:</strong>公司要求每位员工工作至少 2 小时。
- 员工 0 工作 0 小时,不满足要求。
- 员工 1 工作 1 小时,不满足要求。
- 员工 2 工作 2 小时,满足要求。
- 员工 3 工作 3 小时,满足要求。
- 员工 4 工作 4 小时,满足要求。
共有 3 位满足要求的员工。
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>hours = [5,1,4,2,2], target = 6
<strong>输出:</strong>0
<strong>解释:</strong>公司要求每位员工工作至少 6 小时。
共有 0 位满足要求的员工。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n == hours.length &lt;= 50</code></li>
<li><code>0 &lt;=&nbsp;hours[i], target &lt;= 10<sup>5</sup></code></li>
</ul>

View File

@@ -0,0 +1,36 @@
<p>给你一个由 <strong></strong> 整数组成的数组 <code>nums</code></p>
<p>如果数组中的某个子数组满足下述条件,则称之为 <strong>完全子数组</strong> </p>
<ul>
<li>子数组中 <strong>不同</strong> 元素的数目等于整个数组不同元素的数目。</li>
</ul>
<p>返回数组中 <strong>完全子数组</strong> 的数目。</p>
<p><strong>子数组</strong> 是数组中的一个连续非空序列。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>nums = [1,3,1,2,2]
<strong>输出:</strong>4
<strong>解释:</strong>完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>nums = [5,5,5,5]
<strong>输出:</strong>10
<strong>解释:</strong>数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 1000</code></li>
<li><code>1 &lt;= nums[i] &lt;= 2000</code></li>
</ul>

View File

@@ -0,0 +1,34 @@
<p>给你两个正整数&nbsp;<code>low</code>&nbsp;<code>high</code>&nbsp;,都用字符串表示,请你统计闭区间 <code>[low, high]</code>&nbsp;内的 <strong>步进数字</strong>&nbsp;数目。</p>
<p>如果一个整数相邻数位之间差的绝对值都 <strong>恰好</strong>&nbsp;<code>1</code>&nbsp;,那么这个数字被称为 <strong>步进数字</strong>&nbsp;</p>
<p>请你返回一个整数,表示闭区间&nbsp;<code>[low, high]</code>&nbsp;之间步进数字的数目。</p>
<p>由于答案可能很大,请你将它对&nbsp;<code>10<sup>9</sup> + 7</code>&nbsp;<strong>取余</strong>&nbsp;后返回。</p>
<p><b>注意:</b>步进数字不能有前导 0 。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>low = "1", high = "11"
<b>输出:</b>10
<strong>解释:</strong>区间 [1,11] 内的步进数字为 1 2 3 4 5 6 7 8 9 和 10 。总共有 10 个步进数字。所以输出为 10 。</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>low = "90", high = "101"
<b>输出:</b>2
<strong>解释:</strong>区间 [90,101] 内的步进数字为 98 和 101 。总共有 2 个步进数字。所以输出为 2 。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= int(low) &lt;= int(high) &lt; 10<sup>100</sup></code></li>
<li><code>1 &lt;= low.length, high.length &lt;= 100</code></li>
<li><code>low</code>&nbsp;<code>high</code>&nbsp;只包含数字。</li>
<li><code>low</code>&nbsp;<code>high</code>&nbsp;都不含前导 0 。</li>
</ul>

View File

@@ -0,0 +1,41 @@
<p>给你一个下标从 <strong>0</strong>&nbsp;开始的整数数组&nbsp;<code>nums</code>&nbsp;和一个正整数&nbsp;<code>x</code>&nbsp;</p>
<p><strong>一开始</strong>&nbsp;在数组的位置 <code>0</code>&nbsp;处,你可以按照下述规则访问数组中的其他位置:</p>
<ul>
<li>如果你当前在位置&nbsp;<code>i</code>&nbsp;,那么你可以移动到满足&nbsp;<code>i &lt; j</code>&nbsp;&nbsp;<strong>任意</strong>&nbsp;位置&nbsp;<code>j</code>&nbsp;</li>
<li>对于你访问的位置 <code>i</code>&nbsp;,你可以获得分数&nbsp;<code>nums[i]</code>&nbsp;</li>
<li>如果你从位置 <code>i</code>&nbsp;移动到位置 <code>j</code>&nbsp;&nbsp;<code>nums[i]</code>&nbsp;<code>nums[j]</code>&nbsp;<strong>奇偶性</strong>&nbsp;不同,那么你将失去分数&nbsp;<code>x</code>&nbsp;</li>
</ul>
<p>请你返回你能得到的 <strong>最大</strong>&nbsp;得分之和。</p>
<p><strong>注意</strong>&nbsp;,你一开始的分数为&nbsp;<code>nums[0]</code>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><b>输入:</b>nums = [2,3,6,1,9,2], x = 5
<b>输出:</b>13
<b>解释:</b>我们可以按顺序访问数组中的位置0 -&gt; 2 -&gt; 3 -&gt; 4 。
对应位置的值为 2 6 1 和 9 。因为 6 和 1 的奇偶性不同,所以下标从 2 -&gt; 3 让你失去 x = 5 分。
总得分为2 + 6 + 1 + 9 - 5 = 13 。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>nums = [2,4,6,8], x = 3
<b>输出:</b>20
<b>解释:</b>数组中的所有元素奇偶性都一样,所以我们可以将每个元素都访问一次,而且不会失去任何分数。
总得分为2 + 4 + 6 + 8 = 20 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i], x &lt;= 10<sup>6</sup></code></li>
</ul>

View File

@@ -0,0 +1,59 @@
<p>给你一个下标从 <strong>0</strong> 开始、长度为 <code>n</code> 的数组 <code>usageLimits</code></p>
<p>你的任务是使用从 <code>0</code><code>n - 1</code> 的数字创建若干组,并确保每个数字 <code>i</code><strong>所有组</strong> 中使用的次数总共不超过 <code>usageLimits[i]</code> 次。此外,还必须满足以下条件:</p>
<ul>
<li>每个组必须由 <strong>不同</strong> 的数字组成,也就是说,单个组内不能存在重复的数字。</li>
<li>每个组(除了第一个)的长度必须 <strong>严格大于</strong> 前一个组。</li>
</ul>
<p>在满足所有条件的情况下,以整数形式返回可以创建的最大组数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<code><strong>输入:</strong>usageLimits</code> = [1,2,5]
<strong>输出:</strong>3
<strong>解释:</strong>在这个示例中,我们可以使用 0 至多一次,使用 1 至多 2 次,使用 2 至多 5 次。
一种既能满足所有条件,又能创建最多组的方式是:
组 1 包含数字 [2] 。
组 2 包含数字 [1,2] 。
组 3 包含数字 [0,1,2] 。
可以证明能够创建的最大组数是 3 。
所以,输出是 3 。 </pre>
<p><strong>示例 2</strong></p>
<pre>
<code><strong>输入:</strong></code><code>usageLimits</code> = [2,1,2]
<strong>输出:</strong>2
<strong>解释:</strong>在这个示例中,我们可以使用 0 至多 2 次,使用 1 至多 1 次,使用 2 至多 2 次。
一种既能满足所有条件,又能创建最多组的方式是:
组 1 包含数字 [0] 。
组 2 包含数字 [1,2] 。
可以证明能够创建的最大组数是 2 。
所以,输出是 2 。
</pre>
<p><strong>示例 3</strong></p>
<pre>
<code><strong>输入:</strong></code><code>usageLimits</code> = [1,1]
<strong>输出:</strong>1
<strong>解释:</strong>在这个示例中,我们可以使用 0 和 1 至多 1 次。
一种既能满足所有条件,又能创建最多组的方式是:
组 1 包含数字 [0] 。
可以证明能够创建的最大组数是 1 。
所以,输出是 1 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= usageLimits.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= usageLimits[i] &lt;= 10<sup>9</sup></code></li>
</ul>