mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-05 07:21:40 +08:00
update
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
<p>给你一个 <strong>不包含</strong> 任何零的整数数组 <code>nums</code> ,找出自身与对应的负数都在数组中存在的最大正整数 <code>k</code> 。</p>
|
||||
|
||||
<p>返回正整数<em> </em><code>k</code> ,如果不存在这样的整数,返回 <code>-1</code> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>nums = [-1,2,-3,3]
|
||||
<strong>输出:</strong>3
|
||||
<strong>解释:</strong>3 是数组中唯一一个满足题目要求的 k 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>nums = [-1,10,6,7,-7,1]
|
||||
<strong>输出:</strong>7
|
||||
<strong>解释:</strong>数组中存在 1 和 7 对应的负数,7 的值更大。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>nums = [-10,8,6,7,-2,-3]
|
||||
<strong>输出:</strong>-1
|
||||
<strong>解释:</strong>不存在满足题目要求的 k ,返回 -1 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 1000</code></li>
|
||||
<li><code>-1000 <= nums[i] <= 1000</code></li>
|
||||
<li><code>nums[i] != 0</code></li>
|
||||
</ul>
|
@@ -0,0 +1,38 @@
|
||||
<p>给你一个正整数 <code>n</code> ,你需要找到一个下标从 <strong>0</strong> 开始的数组 <code>powers</code> ,它包含 <strong>最少</strong> 数目的 <code>2</code> 的幂,且它们的和为 <code>n</code> 。<code>powers</code> 数组是 <strong>非递减</strong> 顺序的。根据前面描述,构造 <code>powers</code> 数组的方法是唯一的。</p>
|
||||
|
||||
<p>同时给你一个下标从 <strong>0</strong> 开始的二维整数数组 <code>queries</code> ,其中 <code>queries[i] = [left<sub>i</sub>, right<sub>i</sub>]</code> ,其中 <code>queries[i]</code> 表示请你求出满足 <code>left<sub>i</sub> <= j <= right<sub>i</sub></code> 的所有 <code>powers[j]</code> 的乘积。</p>
|
||||
|
||||
<p>请你返回一个数组<em> </em><code>answers</code> ,长度与<em> </em><code>queries</code> 的长度相同,其中<em> </em><code>answers[i]</code>是第<em> </em><code>i</code> 个查询的答案。由于查询的结果可能非常大,请你将每个 <code>answers[i]</code> 都对 <code>10<sup>9</sup> + 7</code> <strong>取余</strong> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>n = 15, queries = [[0,1],[2,2],[0,3]]
|
||||
<b>输出:</b>[2,4,64]
|
||||
<strong>解释:</strong>
|
||||
对于 n = 15 ,得到 powers = [1,2,4,8] 。没法得到元素数目更少的数组。
|
||||
第 1 个查询的答案:powers[0] * powers[1] = 1 * 2 = 2 。
|
||||
第 2 个查询的答案:powers[2] = 4 。
|
||||
第 3 个查询的答案:powers[0] * powers[1] * powers[2] * powers[3] = 1 * 2 * 4 * 8 = 64 。
|
||||
每个答案对 10<sup>9</sup> + 7 得到的结果都相同,所以返回 [2,4,64] 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>n = 2, queries = [[0,0]]
|
||||
<b>输出:</b>[2]
|
||||
<strong>解释:</strong>
|
||||
对于 n = 2, powers = [2] 。
|
||||
唯一一个查询的答案是 powers[0] = 2 。答案对 10<sup>9</sup> + 7 取余后结果相同,所以返回 [2] 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 10<sup>9</sup></code></li>
|
||||
<li><code>1 <= queries.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>0 <= start<sub>i</sub> <= end<sub>i</sub> < powers.length</code></li>
|
||||
</ul>
|
@@ -0,0 +1,39 @@
|
||||
<p>有一棵 <code>n</code> 个节点的无向树,节点编号为 <code>0</code> 到 <code>n - 1</code> 。</p>
|
||||
|
||||
<p>给你一个长度为 <code>n</code> 下标从 <strong>0</strong> 开始的整数数组 <code>nums</code> ,其中 <code>nums[i]</code> 表示第 <code>i</code> 个节点的值。同时给你一个长度为 <code>n - 1</code> 的二维整数数组 <code>edges</code> ,其中 <code>edges[i] = [a<sub>i</sub>, b<sub>i</sub>]</code> 表示节点 <code>a<sub>i</sub></code> 与 <code>b<sub>i</sub></code> 之间有一条边。</p>
|
||||
|
||||
<p>你可以 <strong>删除</strong> 一些边,将这棵树分成几个连通块。一个连通块的 <strong>价值</strong> 定义为这个连通块中 <strong>所有</strong> 节点 <code>i</code> 对应的 <code>nums[i]</code> 之和。</p>
|
||||
|
||||
<p>你需要删除一些边,删除后得到的各个连通块的价值都相等。请返回你可以删除的边数 <strong>最多</strong> 为多少。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/08/26/diagramdrawio.png" style="width: 441px; height: 351px;"></p>
|
||||
|
||||
<pre><b>输入:</b>nums = [6,2,2,2,6], edges = [[0,1],[1,2],[1,3],[3,4]]
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>上图展示了我们可以删除边 [0,1] 和 [3,4] 。得到的连通块为 [0] ,[1,2,3] 和 [4] 。每个连通块的价值都为 6 。可以证明没有别的更好的删除方案存在了,所以答案为 2 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums = [2], edges = []
|
||||
<b>输出:</b>0
|
||||
<b>解释:</b>没有任何边可以删除。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 2 * 10<sup>4</sup></code></li>
|
||||
<li><code>nums.length == n</code></li>
|
||||
<li><code>1 <= nums[i] <= 50</code></li>
|
||||
<li><code>edges.length == n - 1</code></li>
|
||||
<li><code>edges[i].length == 2</code></li>
|
||||
<li><code>0 <= edges[i][0], edges[i][1] <= n - 1</code></li>
|
||||
<li><code>edges</code> 表示一棵合法的树。</li>
|
||||
</ul>
|
@@ -0,0 +1,34 @@
|
||||
<p>给你一个由 <strong>正</strong> 整数组成的数组 <code>nums</code> 。</p>
|
||||
|
||||
<p>你必须取出数组中的每个整数,<strong>反转其中每个数位</strong>,并将反转后得到的数字添加到数组的末尾。这一操作只针对 <code>nums</code> 中原有的整数执行。</p>
|
||||
|
||||
<p>返回结果数组中 <strong>不同</strong> 整数的数目。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>nums = [1,13,10,12,31]
|
||||
<strong>输出:</strong>6
|
||||
<strong>解释:</strong>反转每个数字后,结果数组是 [1,13,10,12,31,<em><strong>1,31,1,21,13</strong></em>] 。
|
||||
反转后得到的数字添加到数组的末尾并按斜体加粗表示。注意对于整数 10 ,反转之后会变成 01 ,即 1 。
|
||||
数组中不同整数的数目为 6(数字 1、10、12、13、21 和 31)。</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>nums = [2,2,2]
|
||||
<strong>输出:</strong>1
|
||||
<strong>解释:</strong>反转每个数字后,结果数组是 [2,2,2,<em><strong>2,2,2</strong></em>] 。
|
||||
数组中不同整数的数目为 1(数字 2)。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= nums[i] <= 10<sup>6</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,37 @@
|
||||
<p>给你一个 <strong>非负</strong> 整数 <code>num</code> 。如果存在某个 <strong>非负</strong> 整数 <code>k</code> 满足 <code>k + reverse(k) = num</code> ,则返回 <code>true</code> ;否则,返回<em> </em><code>false</code> 。</p>
|
||||
|
||||
<p><code>reverse(k)</code> 表示 <code>k</code> 反转每个数位后得到的数字。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>num = 443
|
||||
<strong>输出:</strong>true
|
||||
<strong>解释:</strong>172 + 271 = 443 ,所以返回 true 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>num = 63
|
||||
<strong>输出:</strong>false
|
||||
<strong>解释:</strong>63 不能表示为非负整数及其反转后数字之和,返回 false 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>num = 181
|
||||
<strong>输出:</strong>true
|
||||
<strong>解释:</strong>140 + 041 = 181 ,所以返回 true 。注意,反转后的数字可能包含前导零。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>0 <= num <= 10<sup>5</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,44 @@
|
||||
<p>给你一个下标从 <strong>0</strong> 开始的数组 <code>nums</code> ,它含有 <code>n</code> 个非负整数。</p>
|
||||
|
||||
<p>每一步操作中,你需要:</p>
|
||||
|
||||
<ul>
|
||||
<li>选择一个满足 <code>1 <= i < n</code> 的整数 <code>i</code> ,且 <code>nums[i] > 0</code> 。</li>
|
||||
<li>将 <code>nums[i]</code> 减 1 。</li>
|
||||
<li>将 <code>nums[i - 1]</code> 加 1 。</li>
|
||||
</ul>
|
||||
|
||||
<p>你可以对数组执行 <strong>任意</strong> 次上述操作,请你返回可以得到的 <code>nums</code> 数组中<b> 最大值</b> <strong>最小</strong> 为多少。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums = [3,7,1,6]
|
||||
<b>输出:</b>5
|
||||
<strong>解释:</strong>
|
||||
一串最优操作是:
|
||||
1. 选择 i = 1 ,nums 变为 [4,6,1,6] 。
|
||||
2. 选择 i = 3 ,nums 变为 [4,6,2,5] 。
|
||||
3. 选择 i = 1 ,nums 变为 [5,5,2,5] 。
|
||||
nums 中最大值为 5 。无法得到比 5 更小的最大值。
|
||||
所以我们返回 5 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums = [10,1]
|
||||
<b>输出:</b>10
|
||||
<strong>解释:</strong>
|
||||
最优解是不改动 nums ,10 是最大值,所以返回 10 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>n == nums.length</code></li>
|
||||
<li><code>2 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>0 <= nums[i] <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,39 @@
|
||||
<p>给你一个长度为 <code>5</code> 的字符串 <code>time</code> ,表示一个电子时钟当前的时间,格式为 <code>"hh:mm"</code> 。<strong>最早</strong> 可能的时间是 <code>"00:00"</code> ,<strong>最晚</strong> 可能的时间是 <code>"23:59"</code> 。</p>
|
||||
|
||||
<p>在字符串 <code>time</code> 中,被字符 <code>?</code> 替换掉的数位是 <strong>未知的</strong> ,被替换的数字可能是 <code>0</code> 到 <code>9</code> 中的任何一个。</p>
|
||||
|
||||
<p>请你返回一个整数<em> </em><code>answer</code> ,将每一个 <code>?</code> 都用<em> </em><code>0</code> 到<em> </em><code>9</code> 中一个数字替换后,可以得到的有效时间的数目。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>time = "?5:00"
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>我们可以将 ? 替换成 0 或 1 ,得到 "05:00" 或者 "15:00" 。注意我们不能替换成 2 ,因为时间 "25:00" 是无效时间。所以我们有两个选择。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>time = "0?:0?"
|
||||
<b>输出:</b>100
|
||||
<b>解释:</b>两个 ? 都可以被 0 到 9 之间的任意数字替换,所以我们总共有 100 种选择。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>time = "??:??"
|
||||
<b>输出:</b>1440
|
||||
<b>解释:</b>小时总共有 24 种选择,分钟总共有 60 种选择。所以总共有 24 * 60 = 1440 种选择。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>time</code> 是一个长度为 <code>5</code> 的有效字符串,格式为 <code>"hh:mm"</code> 。</li>
|
||||
<li><code>"00" <= hh <= "23"</code></li>
|
||||
<li><code>"00" <= mm <= "59"</code></li>
|
||||
<li>字符串中有的数位是 <code>'?'</code> ,需要用 <code>0</code> 到 <code>9</code> 之间的数字替换。</li>
|
||||
</ul>
|
@@ -0,0 +1,36 @@
|
||||
<p>给你一个整数数组 <code>nums</code> 和两个整数 <code>minK</code> 以及 <code>maxK</code> 。</p>
|
||||
|
||||
<p><code>nums</code> 的定界子数组是满足下述条件的一个子数组:</p>
|
||||
|
||||
<ul>
|
||||
<li>子数组中的 <strong>最小值</strong> 等于 <code>minK</code> 。</li>
|
||||
<li>子数组中的 <strong>最大值</strong> 等于 <code>maxK</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>返回定界子数组的数目。</p>
|
||||
|
||||
<p>子数组是数组中的一个连续部分。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>nums = [1,3,5,2,7,5], minK = 1, maxK = 5
|
||||
<strong>输出:</strong>2
|
||||
<strong>解释:</strong>定界子数组是 [1,3,5] 和 [1,3,5,2] 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>nums = [1,1,1,1], minK = 1, maxK = 1
|
||||
<strong>输出:</strong>10
|
||||
<strong>解释:</strong>nums 的每个子数组都是一个定界子数组。共有 10 个子数组。</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= nums.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= nums[i], minK, maxK <= 10<sup>6</sup></code></li>
|
||||
</ul>
|
Reference in New Issue
Block a user