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-03-28 09:27:27 +08:00
parent 0bbe66ecc9
commit 26ccf4c890
15 changed files with 9528 additions and 8170 deletions

View File

@@ -0,0 +1,52 @@
<p>给你一个<strong>正整数</strong> <code>k</code> 。最初,你有一个数组 <code>nums = [1]</code></p>
<p>你可以对数组执行以下 <strong>任意 </strong>操作 <strong>任意 </strong>次数(<strong>可能为零</strong></p>
<ul>
<li>选择数组中的任何一个元素,然后将它的值<strong> 增加</strong> <code>1</code></li>
<li>复制数组中的任何一个元素,然后将它附加到数组的末尾。</li>
</ul>
<p>返回使得最终数组元素之<strong></strong>大于或等于 <code>k</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">k = 11</span></p>
<p><strong>输出:</strong><span class="example-io">5</span></p>
<p><strong>解释:</strong></p>
<p>可以对数组 <code>nums = [1]</code> 执行以下操作:</p>
<ul>
<li>将元素的值增加 <code>1</code> 三次。结果数组为 <code>nums = [4]</code></li>
<li>复制元素两次。结果数组为 <code>nums = [4,4,4]</code></li>
</ul>
<p>最终数组的和为 <code>4 + 4 + 4 = 12</code> ,大于等于 <code>k = 11</code><br />
执行的总操作次数为 <code>3 + 2 = 5</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">k = 1</span></p>
<p><strong>输出:</strong><span class="example-io">0</span></p>
<p><strong>解释:</strong></p>
<p>原始数组的和已经大于等于 <code>1</code> ,因此不需要执行操作。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= k &lt;= 10<sup>5</sup></code></li>
</ul>

View File

@@ -0,0 +1,57 @@
<p>给你两个字符串数组&nbsp;<code>wordsContainer</code>&nbsp;<code>wordsQuery</code>&nbsp;</p>
<p>对于每个&nbsp;<code>wordsQuery[i]</code>&nbsp;,你需要从&nbsp;<code>wordsContainer</code>&nbsp;中找到一个与&nbsp;<code>wordsQuery[i]</code>&nbsp;&nbsp;<strong>最长公共后缀</strong>&nbsp;的字符串。如果 <code>wordsContainer</code>&nbsp;中有两个或者更多字符串有最长公共后缀,那么答案为长度<strong>&nbsp;最短</strong>&nbsp;的。如果有超过两个字符串有&nbsp;<strong>相同</strong>&nbsp;最短长度,那么答案为它们在&nbsp;<code>wordsContainer</code>&nbsp;中出现&nbsp;<strong>更早</strong>&nbsp;的一个。</p>
<p>请你返回一个整数数组<em>&nbsp;</em><code>ans</code>&nbsp;,其中<em>&nbsp;</em><code>ans[i]</code><em>&nbsp;</em><code>wordsContainer</code>中与&nbsp;<code>wordsQuery[i]</code>&nbsp;&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>wordsContainer = ["abcd","bcd","xbcd"], wordsQuery = ["cd","bcd","xyz"]</span></p>
<p><span class="example-io"><b>输出:</b>[1,1,1]</span></p>
<p><strong>解释:</strong></p>
<p>我们分别来看每一个&nbsp;<code>wordsQuery[i]</code>&nbsp;</p>
<ul>
<li>对于&nbsp;<code>wordsQuery[0] = "cd"</code>&nbsp;<code>wordsContainer</code>&nbsp;中有最长公共后缀&nbsp;<code>"cd"</code>&nbsp;的字符串下标分别为&nbsp;0 1 和&nbsp;2 。这些字符串中,答案是下标为 1 的字符串,因为它的长度为 3 ,是最短的字符串。</li>
<li>对于&nbsp;<code>wordsQuery[1] = "bcd"</code>&nbsp;<code>wordsContainer</code>&nbsp;中有最长公共后缀&nbsp;<code>"bcd"</code>&nbsp;的字符串下标分别为 0 1 和 2 。这些字符串中,答案是下标为 1 的字符串,因为它的长度为 3 ,是最短的字符串。</li>
<li>对于&nbsp;<code>wordsQuery[2] = "xyz"</code>&nbsp;<code>wordsContainer</code>&nbsp;中没有字符串跟它有公共后缀,所以最长公共后缀为&nbsp;<code>""</code>&nbsp;,下标为&nbsp;0 1 和 2 的字符串都得到这一公共后缀。这些字符串中,&nbsp;答案是下标为 1 的字符串,因为它的长度为 3 ,是最短的字符串。</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>wordsContainer = ["abcdefgh","poiuygh","ghghgh"], wordsQuery = ["gh","acbfgh","acbfegh"]</span></p>
<p><span class="example-io"><b>输出:</b>[2,0,2]</span></p>
<p><strong>解释:</strong></p>
<p>我们分别来看每一个&nbsp;<code>wordsQuery[i]</code>&nbsp;</p>
<ul>
<li>对于&nbsp;<code>wordsQuery[0] = "gh"</code>&nbsp;<code>wordsContainer</code>&nbsp;中有最长公共后缀&nbsp;<code>"gh"</code>&nbsp;的字符串下标分别为 0 1 和 2 。这些字符串中,答案是下标为 2 的字符串,因为它的长度为 6 ,是最短的字符串。</li>
<li>对于&nbsp;<code>wordsQuery[1] = "acbfgh"</code>&nbsp;,只有下标为 0 的字符串有最长公共后缀&nbsp;<code>"fgh"</code>&nbsp;。所以尽管下标为 2 的字符串是最短的字符串,但答案是 0 。</li>
<li>对于&nbsp;<code>wordsQuery[2] = "acbfegh"</code>&nbsp;<code>wordsContainer</code>&nbsp;中有最长公共后缀&nbsp;<code>"gh"</code>&nbsp;的字符串下标分别为 0 1 和 2 。这些字符串中,答案是下标为 2 的字符串,因为它的长度为 6 ,是最短的字符串。</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= wordsContainer.length, wordsQuery.length &lt;= 10<sup>4</sup></code></li>
<li><code>1 &lt;= wordsContainer[i].length &lt;= 5 * 10<sup>3</sup></code></li>
<li><code>1 &lt;= wordsQuery[i].length &lt;= 5 * 10<sup>3</sup></code></li>
<li><code>wordsContainer[i]</code>&nbsp;只包含小写英文字母。</li>
<li><code>wordsQuery[i]</code>&nbsp;只包含小写英文字母。</li>
<li><code>wordsContainer[i].length</code>&nbsp;的和至多为&nbsp;<code>5 * 10<sup>5</sup></code>&nbsp;</li>
<li><code>wordsQuery[i].length</code>&nbsp;的和至多为&nbsp;<code>5 * 10<sup>5</sup></code>&nbsp;</li>
</ul>

View File

@@ -0,0 +1,51 @@
<p>你需要在一个集合里动态记录 ID 的出现频率。给你两个长度都为 <code>n</code>&nbsp;的整数数组&nbsp;<code>nums</code>&nbsp;<code>freq</code>&nbsp;<code>nums</code>&nbsp;中每一个元素表示一个 ID ,对应的 <code>freq</code>&nbsp;中的元素表示这个 ID 在集合中此次操作后需要增加或者减少的数目。</p>
<ul>
<li><strong>增加 ID 的数目:</strong>如果&nbsp;<code>freq[i]</code>&nbsp;是正数,那么&nbsp;<code>freq[i]</code>&nbsp;个 ID 为&nbsp;<code>nums[i]</code>&nbsp;的元素在第 <code>i</code>&nbsp;步操作后会添加到集合中。</li>
<li><strong>减少 ID 的数目:</strong>如果&nbsp;<code>freq[i]</code>&nbsp;是负数,那么&nbsp;<code>-freq[i]</code>&nbsp;个 ID 为&nbsp;<code>nums[i]</code>&nbsp;的元素在第 <code>i</code>&nbsp;步操作后会从集合中删除。</li>
</ul>
<p>请你返回一个长度为 <code>n</code>&nbsp;的数组 <code>ans</code>&nbsp;,其中&nbsp;<code>ans[i]</code>&nbsp;表示第 <code>i</code>&nbsp;步操作后出现频率最高的 ID <strong>数目</strong>&nbsp;,如果在某次操作后集合为空,那么 <code>ans[i]</code>&nbsp;为 0 。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [2,3,2,1], freq = [3,2,-3,1]</span></p>
<p><span class="example-io"><b>输出:</b>[3,3,2,2]</span></p>
<p><strong>解释:</strong></p>
<p>第 0 步操作后,有 3 个 ID 为 2 的元素,所以&nbsp;<code>ans[0] = 3</code>&nbsp;<br />
第 1 步操作后,有 3 个 ID 为 2 的元素和 2 个 ID 为 3 的元素,所以&nbsp;<code>ans[1] = 3</code>&nbsp;<br />
第 2 步操作后,有 2 个 ID 为 3 的元素,所以&nbsp;<code>ans[2] = 2</code>&nbsp;<br />
第 3 步操作后,有 2 个 ID 为 3 的元素和 1 个 ID 为 1 的元素,所以&nbsp;<code>ans[3] = 2</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [5,5,3], freq = [2,-2,1]</span></p>
<p><span class="example-io"><b>输出:</b>[2,0,1]</span></p>
<p><strong>解释:</strong></p>
<p>第 0 步操作后,有 2 个 ID 为 5 的元素,所以&nbsp;<code>ans[0] = 2</code>&nbsp;<br />
第 1 步操作后,集合中没有任何元素,所以&nbsp;<code>ans[1] = 0</code>&nbsp;<br />
第 2 步操作后,有 1 个 ID 为 3 的元素,所以&nbsp;<code>ans[2] = 1</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length == freq.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
<li><code>-10<sup>5</sup> &lt;= freq[i] &lt;= 10<sup>5</sup></code></li>
<li><code>freq[i] != 0</code></li>
<li>输入保证任何操作后,集合中的元素出现次数不会为负数。</li>
</ul>

View File

@@ -0,0 +1,37 @@
<p>给你一个字符串 <code>s</code> ,请找出满足每个字符最多出现两次的最长子字符串,并返回该<span data-keyword="substring">子字符串</span><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 = "bcbbbcba"</span></p>
<p><strong>输出:</strong> <span class="example-io">4</span></p>
<p><strong>解释:</strong></p>
<p>以下子字符串长度为 4并且每个字符最多出现两次<code>"bcbb<u>bcba</u>"</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong> <span class="example-io">s = "aaaa"</span></p>
<p><strong>输出:</strong> <span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>以下子字符串长度为 2并且每个字符最多出现两次<code>"<u>aa</u>aa"</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul><!-- 字符串 s 的长度在 2 到 100 之间 -->
<li><code>2 &lt;= s.length &lt;= 100</code></li>
<!-- 字符串 s 仅包含小写英文字母 -->
<li><code>s</code> 仅由小写英文字母组成。</li>
</ul>