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:
2022-12-24 21:54:49 +08:00
parent 9ac85e5cbf
commit 32ab538e5f
32 changed files with 15264 additions and 12316 deletions

View File

@@ -0,0 +1,37 @@
<p>给你一个正整数 <code>n</code></p>
<p>请你将 <code>n</code> 的值替换为 <code>n</code><strong>质因数</strong> 之和,重复这一过程。</p>
<ul>
<li>注意,如果 <code>n</code> 能够被某个质因数多次整除,则在求和时,应当包含这个质因数同样次数。</li>
</ul>
<p>返回<em> </em><code>n</code><em> </em>可以取到的最小值。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>n = 15
<strong>输出:</strong>5
<strong>解释:</strong>最开始n = 15 。
15 = 3 * 5 ,所以 n 替换为 3 + 5 = 8 。
8 = 2 * 2 * 2 ,所以 n 替换为 2 + 2 + 2 = 6 。
6 = 2 * 3 ,所以 n 替换为 2 + 3 = 5 。
5 是 n 可以取到的最小值。
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>n = 3
<strong>输出:</strong>3
<strong>解释:</strong>最开始n = 3 。
3 是 n 可以取到的最小值。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= n &lt;= 10<sup>5</sup></code></li>
</ul>

View File

@@ -0,0 +1,63 @@
<p>给你一个整数&nbsp;<code>n</code>&nbsp;,表示你有一棵含有&nbsp;<code>2<sup>n</sup> - 1</code>&nbsp;个节点的 <strong>完全二叉树</strong>&nbsp;。根节点的编号是&nbsp;<code>1</code>&nbsp;,树中编号在<code>[1, 2<sup>n - 1</sup> - 1]</code>&nbsp;之间,编号为&nbsp;<code>val</code>&nbsp;的节点都有两个子节点,满足:</p>
<ul>
<li>左子节点的编号为&nbsp;<code>2 * val</code></li>
<li>右子节点的编号为&nbsp;<code>2 * val + 1</code></li>
</ul>
<p>给你一个长度为 <code>m</code>&nbsp;的查询数组 <code>queries</code>&nbsp;,它是一个二维整数数组,其中&nbsp;<code>queries[i] = [a<sub>i</sub>, b<sub>i</sub>]</code>&nbsp;。对于每个查询,求出以下问题的解:</p>
<ol>
<li>在节点编号为&nbsp;<code>a<sub>i</sub></code>&nbsp;<code>b<sub>i</sub></code>&nbsp;之间添加一条边。</li>
<li>求出图中环的长度。</li>
<li>删除节点编号为&nbsp;<code>a<sub>i</sub></code>&nbsp;<code>b<sub>i</sub></code>&nbsp;之间新添加的边。</li>
</ol>
<p><strong>注意:</strong></p>
<ul>
<li><strong></strong> 是开始和结束于同一节点的一条路径,路径中每条边都只会被访问一次。</li>
<li>环的长度是环中边的数目。</li>
<li>在树中添加额外的边后,两个点之间可能会有多条边。</li>
</ul>
<p>请你返回一个长度为 <code>m</code>&nbsp;的数组<em>&nbsp;</em><code>answer</code>&nbsp;,其中&nbsp;<code>answer[i]</code>&nbsp;是第&nbsp;<code>i</code>&nbsp;个查询的结果<i></i></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/25/bexample1.png" style="width: 647px; height: 128px;" /></p>
<pre>
<b>输入:</b>n = 3, queries = [[5,3],[4,7],[2,3]]
<b>输出:</b>[4,5,3]
<b>解释:</b>上图是一棵有 2<sup>3</sup> - 1 个节点的树。红色节点表示添加额外边后形成环的节点。
- 在节点 3 和节点 5 之间添加边后,环为 [5,2,1,3] ,所以第一个查询的结果是 4 。删掉添加的边后处理下一个查询。
- 在节点 4 和节点 7 之间添加边后,环为 [4,2,1,3,7] ,所以第二个查询的结果是 5 。删掉添加的边后处理下一个查询。
- 在节点 2 和节点 3 之间添加边后,环为 [2,1,3] ,所以第三个查询的结果是 3 。删掉添加的边。
</pre>
<p><strong>示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/25/aexample2.png" style="width: 146px; height: 71px;" /></p>
<pre>
<b>输入:</b>n = 2, queries = [[1,2]]
<b>输出:</b>[2]
<b>解释:</b>上图是一棵有 2<sup>2</sup> - 1 个节点的树。红色节点表示添加额外边后形成环的节点。
- 在节点 1 和节点 2 之间添加边后,环为 [2,1] ,所以第一个查询的结果是 2 。删掉添加的边。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= n &lt;= 30</code></li>
<li><code>m == queries.length</code></li>
<li><code>1 &lt;= m &lt;= 10<sup>5</sup></code></li>
<li><code>queries[i].length == 2</code></li>
<li><code>1 &lt;= a<sub>i</sub>, b<sub>i</sub> &lt;= 2<sup>n</sup> - 1</code></li>
<li><code>a<sub>i</sub> != b<sub>i</sub></code></li>
</ul>

View File

@@ -0,0 +1,51 @@
<p>给你一个有 <code>n</code>&nbsp;个节点的 <strong>无向</strong>&nbsp;图,节点编号为&nbsp;<code>1</code>&nbsp;&nbsp;<code>n</code>&nbsp;。再给你整数&nbsp;<code>n</code>&nbsp;和一个二维整数数组&nbsp;<code>edges</code>&nbsp;,其中&nbsp;<code>edges[i] = [a<sub>i</sub>, b<sub>i</sub>]</code>&nbsp;表示节点&nbsp;<code>a<sub>i</sub></code>&nbsp;<code>b<sub>i</sub></code>&nbsp;之间有一条边。图不一定连通。</p>
<p>你可以给图中添加 <strong>至多</strong>&nbsp;两条额外的边(也可以一条边都不添加),使得图中没有重边也没有自环。</p>
<p>如果添加额外的边后,可以使得图中所有点的度数都是偶数,返回&nbsp;<code>true</code>&nbsp;,否则返回&nbsp;<code>false</code>&nbsp;</p>
<p>点的度数是连接一个点的边的数目。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/26/agraphdrawio.png" style="width: 500px; height: 190px;" /></p>
<pre>
<b>输入:</b>n = 5, edges = [[1,2],[2,3],[3,4],[4,2],[1,4],[2,5]]
<b>输出:</b>true
<b>解释:</b>上图展示了添加一条边的合法方案。
最终图中每个节点都连接偶数条边。
</pre>
<p><strong>示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/26/aagraphdrawio.png" style="width: 400px; height: 120px;" /></p>
<pre>
<b>输入:</b>n = 4, edges = [[1,2],[3,4]]
<b>输出:</b>true
<b>解释:</b>上图展示了添加两条边的合法方案。</pre>
<p><strong>示例 3</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/26/aaagraphdrawio.png" style="width: 150px; height: 158px;" /></p>
<pre>
<b>输入:</b>n = 4, edges = [[1,2],[1,3],[1,4]]
<b>输出:</b>false
<b>解释:</b>无法添加至多 2 条边得到一个符合要求的图。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>3 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>2 &lt;= edges.length &lt;= 10<sup>5</sup></code></li>
<li><code>edges[i].length == 2</code></li>
<li><code>1 &lt;= a<sub>i</sub>, b<sub>i</sub> &lt;= n</code></li>
<li><code>a<sub>i</sub> != b<sub>i</sub></code></li>
<li>图中不会有重边</li>
</ul>

View File

@@ -0,0 +1,47 @@
<p>给你一个下标从 <strong>0</strong> 开始的字符串数组 <code>words</code></p>
<p>如果两个字符串由相同的字符组成,则认为这两个字符串 <strong>相似</strong></p>
<ul>
<li>例如,<code>"abca"</code><code>"cba"</code> 相似,因为它们都由字符 <code>'a'</code><code>'b'</code><code>'c'</code> 组成。</li>
<li>然而,<code>"abacba"</code><code>"bcfd"</code> 不相似,因为它们不是相同字符组成的。</li>
</ul>
<p>请你找出满足字符串&nbsp;<code>words[i]</code><em> </em><em> </em><code>words[j]</code> 相似的下标对<em> </em><code>(i, j)</code><em> </em>,并返回下标对的数目,其中 <code>0 &lt;= i &lt; j &lt;= word.length - 1</code></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>words = ["aba","aabb","abcd","bac","aabc"]
<strong>输出:</strong>2
<strong>解释:</strong>共有 2 对满足条件:
- i = 0 且 j = 1 words[0] 和 words[1] 只由字符 'a' 和 'b' 组成。
- i = 3 且 j = 4 words[3] 和 words[4] 只由字符 'a'、'b' 和 'c' 。
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>words = ["aabb","ab","ba"]
<strong>输出:</strong>3
<strong>解释:</strong>共有 3 对满足条件:
- i = 0 且 j = 1 words[0] 和 words[1] 只由字符 'a' 和 'b' 组成。
- i = 0 且 j = 2 words[0] 和 words[2] 只由字符 'a' 和 'b' 组成。
- i = 1 且 j = 2 words[1] 和 words[2] 只由字符 'a' 和 'b' 组成。
</pre>
<p><strong>示例 3</strong></p>
<pre><strong>输入:</strong>words = ["nba","cba","dba"]
<strong>输出:</strong>0
<strong>解释:</strong>不存在满足条件的下标对,返回 0 。</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;= 100</code></li>
<li><code>words[i]</code> 仅由小写英文字母组成</li>
</ul>

View File

@@ -0,0 +1,28 @@
<p>给你一个整数数组 <code>nums</code> ,找出并返回所有该数组中不同的递增子序列,递增子序列中 <strong>至少有两个元素</strong> 。你可以按 <strong>任意顺序</strong> 返回答案。</p>
<p>数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [4,6,7,7]
<strong>输出:</strong>[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [4,4,3,2,1]
<strong>输出:</strong>[[4,4]]
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 15</code></li>
<li><code>-100 &lt;= nums[i] &lt;= 100</code></li>
</ul>