mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-04 23:11:41 +08:00
update
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<p>给你一个正整数 <code>n</code> ,表示总共有 <code>n</code> 个城市,城市从 <code>1</code> 到 <code>n</code> 编号。给你一个二维数组 <code>roads</code> ,其中 <code>roads[i] = [a<sub>i</sub>, b<sub>i</sub>, distance<sub>i</sub>]</code> 表示城市 <code>a<sub>i</sub></code> 和 <code>b<sub>i</sub></code> 之间有一条 <strong>双向</strong> 道路,道路距离为 <code>distance<sub>i</sub></code> 。城市构成的图不一定是连通的。</p>
|
||||
|
||||
<p>两个城市之间一条路径的 <strong>分数</strong> 定义为这条路径中道路的 <strong>最小</strong> 距离。</p>
|
||||
|
||||
<p><span class="text-only" data-eleid="20" style="white-space: pre;">城市</span><span class="text-only text-font-italic" data-eleid="21" style="white-space: pre;"> </span><code><span class="text-only" data-eleid="22" style="white-space: pre;">1</span></code><span class="text-only text-font-italic" data-eleid="23" style="white-space: pre;"> </span><span class="text-only" data-eleid="24" style="white-space: pre;">和城市</span><span class="text-only text-font-italic" data-eleid="25" style="white-space: pre;"> </span><span class="text-only" data-eleid="26" style="white-space: pre;"><code>n</code> 之间的所有路径的 </span><strong><span class="text-only" data-eleid="27" style="white-space: pre;">最小</span></strong><span class="text-only" data-eleid="28" style="white-space: pre;"> 分数。</span></p>
|
||||
|
||||
<p><b>注意:</b></p>
|
||||
|
||||
<ul>
|
||||
<li>一条路径指的是两个城市之间的道路序列。</li>
|
||||
<li>一条路径可以 <strong>多次</strong> 包含同一条道路,你也可以沿着路径多次到达城市 <code>1</code> 和城市 <code>n</code> 。</li>
|
||||
<li>测试数据保证城市 <code>1</code> 和城市<code>n</code> 之间 <strong>至少</strong> 有一条路径。</li>
|
||||
</ul>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/12/graph11.png" style="width: 190px; height: 231px;" /></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>n = 4, roads = [[1,2,9],[2,3,6],[2,4,5],[1,4,7]]
|
||||
<b>输出:</b>5
|
||||
<b>解释:</b>城市 1 到城市 4 的路径中,分数最小的一条为:1 -> 2 -> 4 。这条路径的分数是 min(9,5) = 5 。
|
||||
不存在分数更小的路径。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/12/graph22.png" style="width: 190px; height: 231px;" /></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>n = 4, roads = [[1,2,2],[1,3,4],[3,4,7]]
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>城市 1 到城市 4 分数最小的路径是:1 -> 2 -> 1 -> 3 -> 4 。这条路径的分数是 min(2,2,4,7) = 2 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= roads.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>roads[i].length == 3</code></li>
|
||||
<li><code>1 <= a<sub>i</sub>, b<sub>i</sub> <= n</code></li>
|
||||
<li><code>a<sub>i</sub> != b<sub>i</sub></code></li>
|
||||
<li><code>1 <= distance<sub>i</sub> <= 10<sup>4</sup></code></li>
|
||||
<li>不会有重复的边。</li>
|
||||
<li>城市 <code>1</code> 和城市 <code>n</code> 之间至少有一条路径。</li>
|
||||
</ul>
|
@@ -0,0 +1,37 @@
|
||||
<p>给你一个链表的头节点 <code>head</code> 。</p>
|
||||
|
||||
<p>对于列表中的每个节点 <code>node</code> ,如果其右侧存在一个具有 <strong>严格更大</strong> 值的节点,则移除 <code>node</code> 。</p>
|
||||
|
||||
<p>返回修改后链表的头节点<em> </em><code>head</code><em> </em>。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/02/drawio.png" style="width: 631px; height: 51px;" /></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>head = [5,2,13,3,8]
|
||||
<strong>输出:</strong>[13,8]
|
||||
<strong>解释:</strong>需要移除的节点是 5 ,2 和 3 。
|
||||
- 节点 13 在节点 5 右侧。
|
||||
- 节点 13 在节点 2 右侧。
|
||||
- 节点 8 在节点 3 右侧。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>head = [1,1,1,1]
|
||||
<strong>输出:</strong>[1,1,1,1]
|
||||
<strong>解释:</strong>每个节点的值都是 1 ,所以没有需要移除的节点。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>给定列表中的节点数目在范围 <code>[1, 10<sup>5</sup>]</code> 内</li>
|
||||
<li><code>1 <= Node.val <= 10<sup>5</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,46 @@
|
||||
<p>圆内一个 <strong>有效切割</strong> ,符合以下二者之一:</p>
|
||||
|
||||
<ul>
|
||||
<li>该切割是两个端点在圆上的线段,且该线段经过圆心。</li>
|
||||
<li>该切割是一端在圆心另一端在圆上的线段。</li>
|
||||
</ul>
|
||||
|
||||
<p>一些有效和无效的切割如下图所示。</p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/29/alldrawio.png" style="width: 450px; height: 174px;" /></p>
|
||||
|
||||
<p>给你一个整数 <code>n</code> ,请你返回将圆切割成相等的 <code>n</code> 等分的 <strong>最少</strong> 切割次数。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/24/11drawio.png" style="width: 200px; height: 200px;" /></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>n = 4
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>
|
||||
上图展示了切割圆 2 次,得到四等分。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/24/22drawio.png" style="width: 200px; height: 201px;" /></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>n = 3
|
||||
<b>输出:</b>3
|
||||
<strong>解释:</strong>
|
||||
最少需要切割 3 次,将圆切成三等分。
|
||||
少于 3 次切割无法将圆切成大小相等面积相同的 3 等分。
|
||||
同时可以观察到,第一次切割无法将圆切割开。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 100</code></li>
|
||||
</ul>
|
@@ -0,0 +1,46 @@
|
||||
<p>给你一个正整数数组 <code>skill</code> ,数组长度为 <strong>偶数</strong> <code>n</code> ,其中 <code>skill[i]</code> 表示第 <code>i</code> 个玩家的技能点。将所有玩家分成 <code>n / 2</code> 个 <code>2</code> 人团队,使每一个团队的技能点之和 <strong>相等</strong> 。</p>
|
||||
|
||||
<p>团队的 <strong>化学反应</strong> 等于团队中玩家的技能点 <strong>乘积</strong> 。</p>
|
||||
|
||||
<p>返回所有团队的 <strong>化学反应</strong> 之和,如果无法使每个团队的技能点之和相等,则返回 <code>-1</code> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>skill = [3,2,5,1,3,4]
|
||||
<strong>输出:</strong>22
|
||||
<strong>解释:</strong>
|
||||
将玩家分成 3 个团队 (1, 5), (2, 4), (3, 3) ,每个团队的技能点之和都是 6 。
|
||||
所有团队的化学反应之和是 1 * 5 + 2 * 4 + 3 * 3 = 5 + 8 + 9 = 22 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>skill = [3,4]
|
||||
<strong>输出:</strong>12
|
||||
<strong>解释:</strong>
|
||||
两个玩家形成一个团队,技能点之和是 7 。
|
||||
团队的化学反应是 3 * 4 = 12 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>skill = [1,1,2,3]
|
||||
<strong>输出:</strong>-1
|
||||
<strong>解释:</strong>
|
||||
无法将玩家分成每个团队技能点都相等的若干个 2 人团队。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= skill.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>skill.length</code> 是偶数</li>
|
||||
<li><code>1 <= skill[i] <= 1000</code></li>
|
||||
</ul>
|
@@ -0,0 +1,57 @@
|
||||
<p>给你一个顾客访问商店的日志,用一个下标从 <strong>0</strong> 开始且只包含字符 <code>'N'</code> 和 <code>'Y'</code> 的字符串 <code>customers</code> 表示:</p>
|
||||
|
||||
<ul>
|
||||
<li>如果第 <code>i</code> 个字符是 <code>'Y'</code> ,它表示第 <code>i</code> 小时有顾客到达。</li>
|
||||
<li>如果第 <code>i</code> 个字符是 <code>'N'</code> ,它表示第 <code>i</code> 小时没有顾客到达。</li>
|
||||
</ul>
|
||||
|
||||
<p>如果商店在第 <code>j</code> 小时关门(<code>0 <= j <= n</code>),代价按如下方式计算:</p>
|
||||
|
||||
<ul>
|
||||
<li>在开门期间,如果某一个小时没有顾客到达,代价增加 <code>1</code> 。</li>
|
||||
<li>在关门期间,如果某一个小时有顾客到达,代价增加 <code>1</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回在确保代价 <strong>最小</strong> 的前提下,商店的 <strong>最早</strong> 关门时间。</p>
|
||||
|
||||
<p>注意,商店在第 <code>j</code> 小时关门表示在第 <code>j</code> 小时以及之后商店处于关门状态。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>customers = "YYNY"
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>
|
||||
- 第 0 小时关门,总共 1+1+0+1 = 3 代价。
|
||||
- 第 1 小时关门,总共 0+1+0+1 = 2 代价。
|
||||
- 第 2 小时关门,总共 0+0+0+1 = 1 代价。
|
||||
- 第 3 小时关门,总共 0+0+1+1 = 2 代价。
|
||||
- 第 4 小时关门,总共 0+0+1+0 = 1 代价。
|
||||
在第 2 或第 4 小时关门代价都最小。由于第 2 小时更早,所以最优关门时间是 2 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>customers = "NNNNN"
|
||||
<b>输出:</b>0
|
||||
<b>解释:</b>最优关门时间是 0 ,因为自始至终没有顾客到达。</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<b>输入:</b>customers = "YYYY"
|
||||
<b>输出:</b>4
|
||||
<b>解释:</b>最优关门时间是 4 ,因为每一小时均有顾客到达。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= customers.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>customers</code> 只包含字符 <code>'Y'</code> 和 <code>'N'</code> 。</li>
|
||||
</ul>
|
61
leetcode-cn/problem (Chinese)/回环句 [circular-sentence].html
Normal file
61
leetcode-cn/problem (Chinese)/回环句 [circular-sentence].html
Normal file
@@ -0,0 +1,61 @@
|
||||
<p><strong>句子</strong> 是由单个空格分隔的一组单词,且不含前导或尾随空格。</p>
|
||||
|
||||
<ul>
|
||||
<li>例如,<code>"Hello World"</code>、<code>"HELLO"</code>、<code>"hello world hello world"</code> 都是符合要求的句子。</li>
|
||||
</ul>
|
||||
|
||||
<p>单词 <strong>仅</strong> 由大写和小写英文字母组成。且大写和小写字母会视作不同字符。</p>
|
||||
|
||||
<p>如果句子满足下述全部条件,则认为它是一个 <strong>回环句</strong> :</p>
|
||||
|
||||
<ul>
|
||||
<li>单词的最后一个字符和下一个单词的第一个字符相等。</li>
|
||||
<li>最后一个单词的最后一个字符和第一个单词的第一个字符相等。</li>
|
||||
</ul>
|
||||
|
||||
<p>例如,<code>"leetcode exercises sound delightful"</code>、<code>"eetcode"</code>、<code>"leetcode eats soul"</code> 都是回环句。然而,<code>"Leetcode is cool"</code>、<code>"happy Leetcode"</code>、<code>"Leetcode"</code> 和 <code>"I like Leetcode"</code> 都 <strong>不</strong> 是回环句。</p>
|
||||
|
||||
<p>给你一个字符串 <code>sentence</code> ,请你判断它是不是一个回环句。如果是,返回 <code>true</code><em> </em>;否则,返回 <code>false</code> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>sentence = "leetcode exercises sound delightful"
|
||||
<strong>输出:</strong>true
|
||||
<strong>解释:</strong>句子中的单词是 ["leetcode", "exercises", "sound", "delightful"] 。
|
||||
- leetcod<strong><em>e</em></strong> 的最后一个字符和 <strong><em>e</em></strong>xercises 的第一个字符相等。
|
||||
- exercise<em><strong>s</strong></em> 的最后一个字符和 <em><strong>s</strong></em>ound 的第一个字符相等。
|
||||
- <em><strong>s</strong></em>ound 的最后一个字符和 delightfu<em><strong>l</strong></em> 的第一个字符相等。
|
||||
- delightfu<em><strong>l</strong></em> 的最后一个字符和 <em><strong>l</strong></em>eetcode 的第一个字符相等。
|
||||
这个句子是回环句。</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>sentence = "eetcode"
|
||||
<strong>输出:</strong>true
|
||||
<strong>解释:</strong>句子中的单词是 ["eetcode"] 。
|
||||
- eetcod<em><strong>e</strong></em> 的最后一个字符和 eetcod<em><strong>e</strong></em> 的第一个字符相等。
|
||||
这个句子是回环句。</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>sentence = "Leetcode is cool"
|
||||
<strong>输出:</strong>false
|
||||
<strong>解释:</strong>句子中的单词是 ["Leetcode", "is", "cool"] 。
|
||||
- Leetcod<em><strong>e</strong></em> 的最后一个字符和 i<strong><em>s</em></strong> 的第一个字符 <strong>不</strong> 相等。
|
||||
这个句子 <strong>不</strong> 是回环句。</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= sentence.length <= 500</code></li>
|
||||
<li><code>sentence</code> 仅由大小写英文字母和空格组成</li>
|
||||
<li><code>sentence</code> 中的单词由单个空格进行分隔</li>
|
||||
<li>不含任何前导或尾随空格</li>
|
||||
</ul>
|
@@ -0,0 +1,50 @@
|
||||
<p>给你一个正整数 <code>n</code> ,表示一个 <strong>无向</strong> 图中的节点数目,节点编号从 <code>1</code> 到 <code>n</code> 。</p>
|
||||
|
||||
<p>同时给你一个二维整数数组 <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><sub> </sub>之间有一条 <strong>双向</strong> 边。注意给定的图可能是不连通的。</p>
|
||||
|
||||
<p>请你将图划分为 <code>m</code> 个组(编号从 <strong>1</strong> 开始),满足以下要求:</p>
|
||||
|
||||
<ul>
|
||||
<li>图中每个节点都只属于一个组。</li>
|
||||
<li>图中每条边连接的两个点 <code>[a<sub>i, </sub>b<sub>i</sub>]</code> ,如果 <code>a<sub>i</sub></code> 属于编号为 <code>x</code> 的组,<code>b<sub>i</sub></code> 属于编号为 <code>y</code> 的组,那么 <code>|y - x| = 1</code> 。</li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回最多可以将节点分为多少个组(也就是最大的<em> </em><code>m</code> )。如果没办法在给定条件下分组,请你返回 <code>-1</code> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/13/example1.png" style="width: 352px; height: 201px;"></p>
|
||||
|
||||
<pre><b>输入:</b>n = 6, edges = [[1,2],[1,4],[1,5],[2,6],[2,3],[4,6]]
|
||||
<b>输出:</b>4
|
||||
<b>解释:</b>如上图所示,
|
||||
- 节点 5 在第一个组。
|
||||
- 节点 1 在第二个组。
|
||||
- 节点 2 和节点 4 在第三个组。
|
||||
- 节点 3 和节点 6 在第四个组。
|
||||
所有边都满足题目要求。
|
||||
如果我们创建第五个组,将第三个组或者第四个组中任何一个节点放到第五个组,至少有一条边连接的两个节点所属的组编号不符合题目要求。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>n = 3, edges = [[1,2],[2,3],[3,1]]
|
||||
<b>输出:</b>-1
|
||||
<b>解释:</b>如果我们将节点 1 放入第一个组,节点 2 放入第二个组,节点 3 放入第三个组,前两条边满足题目要求,但第三条边不满足题目要求。
|
||||
没有任何符合题目要求的分组方式。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 500</code></li>
|
||||
<li><code>1 <= edges.length <= 10<sup>4</sup></code></li>
|
||||
<li><code>edges[i].length == 2</code></li>
|
||||
<li><code>1 <= a<sub>i</sub>, b<sub>i</sub> <= n</code></li>
|
||||
<li><code>a<sub>i</sub> != b<sub>i</sub></code></li>
|
||||
<li>两个点之间至多只有一条边。</li>
|
||||
</ul>
|
@@ -0,0 +1,40 @@
|
||||
<p>给你一个正整数 <code>n</code> ,找出满足下述条件的<strong> 中枢整数</strong> <code>x</code> :</p>
|
||||
|
||||
<ul>
|
||||
<li><code>1</code> 和 <code>x</code> 之间的所有元素之和等于 <code>x</code> 和 <code>n</code> 之间所有元素之和。</li>
|
||||
</ul>
|
||||
|
||||
<p>返回中枢整数<em> </em><code>x</code> 。如果不存在中枢整数,则返回 <code>-1</code> 。题目保证对于给定的输入,至多存在一个中枢整数。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong class="example">示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>n = 8
|
||||
<strong>输出:</strong>6
|
||||
<strong>解释:</strong>6 是中枢整数,因为 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21 。
|
||||
</pre>
|
||||
|
||||
<p><strong class="example">示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>n = 1
|
||||
<strong>输出:</strong>1
|
||||
<strong>解释:</strong>1 是中枢整数,因为 1 = 1 。
|
||||
</pre>
|
||||
|
||||
<p><strong class="example">示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>n = 4
|
||||
<strong>输出:</strong>-1
|
||||
<strong>解释:</strong>可以证明不存在满足题目要求的整数。</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 1000</code></li>
|
||||
</ul>
|
@@ -0,0 +1,42 @@
|
||||
<p>给你一个长度为 <code>n</code> 的数组 <code>nums</code> ,该数组由从 <code>1</code> 到 <code>n</code> 的 <strong>不同</strong> 整数组成。另给你一个正整数 <code>k</code> 。</p>
|
||||
|
||||
<p>统计并返回 <code>num</code> 中的 <strong>中位数</strong> 等于 <code>k</code> 的非空子数组的数目。</p>
|
||||
|
||||
<p><strong>注意:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>数组的中位数是按 <strong>递增</strong> 顺序排列后位于 <strong>中间</strong> 的那个元素,如果数组长度为偶数,则中位数是位于中间靠 <strong>左</strong> 的那个元素。
|
||||
|
||||
<ul>
|
||||
<li>例如,<code>[2,3,1,4]</code> 的中位数是 <code>2</code> ,<code>[8,4,3,5,1]</code> 的中位数是 <code>4</code> 。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>子数组是数组中的一个连续部分。</li>
|
||||
</ul>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>nums = [3,2,1,4,5], k = 4
|
||||
<strong>输出:</strong>3
|
||||
<strong>解释:</strong>中位数等于 4 的子数组有:[4]、[4,5] 和 [1,4,5] 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>nums = [2,3,1], k = 3
|
||||
<strong>输出:</strong>1
|
||||
<strong>解释:</strong>[3] 是唯一一个中位数等于 3 的子数组。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>n == nums.length</code></li>
|
||||
<li><code>1 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= nums[i], k <= n</code></li>
|
||||
<li><code>nums</code> 中的整数互不相同</li>
|
||||
</ul>
|
@@ -0,0 +1,42 @@
|
||||
<p>给你数字字符串 <code>s</code> ,请你返回 <code>s</code> 中长度为 <code>5</code> 的 <b>回文子序列</b> 数目。由于答案可能很大,请你将答案对 <code>10<sup>9</sup> + 7</code> <strong>取余</strong> 后返回。</p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>如果一个字符串从前往后和从后往前读相同,那么它是 <strong>回文字符串</strong> 。</li>
|
||||
<li>子序列是一个字符串中删除若干个字符后,不改变字符顺序,剩余字符构成的字符串。</li>
|
||||
</ul>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>s = "103301"
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>
|
||||
总共有 6 长度为 5 的子序列:"10330" ,"10331" ,"10301" ,"10301" ,"13301" ,"03301" 。
|
||||
它们中有两个(都是 "10301")是回文的。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>s = "0000000"
|
||||
<b>输出:</b>21
|
||||
<b>解释:</b>所有 21 个长度为 5 的子序列都是 "00000" ,都是回文的。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>s = "9999900000"
|
||||
<b>输出:</b>2
|
||||
<b>解释:</b>仅有的两个回文子序列是 "99999" 和 "00000" 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= s.length <= 10<sup>4</sup></code></li>
|
||||
<li><code>s</code> 只包含数字字符。</li>
|
||||
</ul>
|
@@ -0,0 +1,60 @@
|
||||
<p>给你一个下标从 <strong>0</strong> 开始的 <code>m x n</code> 二进制矩阵 <code>grid</code> 。</p>
|
||||
|
||||
<p>我们按照如下过程,定义一个下标从 <strong>0</strong> 开始的 <code>m x n</code> 差值矩阵 <code>diff</code> :</p>
|
||||
|
||||
<ul>
|
||||
<li>令第 <code>i</code> 行一的数目为 <code>onesRow<sub>i</sub></code> 。</li>
|
||||
<li>令第 <code>j</code> 列一的数目为 <code>onesCol<sub>j</sub></code><sub> </sub>。</li>
|
||||
<li>令第 <code>i</code> 行零的数目为 <code>zerosRow<sub>i</sub></code> 。</li>
|
||||
<li>令第 <code>j</code> 列零的数目为 <code>zerosCol<sub>j</sub></code> 。</li>
|
||||
<li><code>diff[i][j] = onesRow<sub>i</sub> + onesCol<sub>j</sub> - zerosRow<sub>i</sub> - zerosCol<sub>j</sub></code></li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回差值矩阵<em> </em><code>diff</code> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<p><img src="https://assets.leetcode.com/uploads/2022/11/06/image-20221106171729-5.png" style="width: 400px; height: 208px;"></p>
|
||||
|
||||
<pre><b>输入:</b>grid = [[0,1,1],[1,0,1],[0,0,1]]
|
||||
<b>输出:</b>[[0,0,4],[0,0,4],[-2,-2,2]]
|
||||
<b>解释:</b>
|
||||
- diff[0][0] = <code>onesRow<sub>0</sub> + onesCol<sub>0</sub> - zerosRow<sub>0</sub> - zerosCol<sub>0</sub></code> = 2 + 1 - 1 - 2 = 0
|
||||
- diff[0][1] = <code>onesRow<sub>0</sub> + onesCol<sub>1</sub> - zerosRow<sub>0</sub> - zerosCol<sub>1</sub></code> = 2 + 1 - 1 - 2 = 0
|
||||
- diff[0][2] = <code>onesRow<sub>0</sub> + onesCol<sub>2</sub> - zerosRow<sub>0</sub> - zerosCol<sub>2</sub></code> = 2 + 3 - 1 - 0 = 4
|
||||
- diff[1][0] = <code>onesRow<sub>1</sub> + onesCol<sub>0</sub> - zerosRow<sub>1</sub> - zerosCol<sub>0</sub></code> = 2 + 1 - 1 - 2 = 0
|
||||
- diff[1][1] = <code>onesRow<sub>1</sub> + onesCol<sub>1</sub> - zerosRow<sub>1</sub> - zerosCol<sub>1</sub></code> = 2 + 1 - 1 - 2 = 0
|
||||
- diff[1][2] = <code>onesRow<sub>1</sub> + onesCol<sub>2</sub> - zerosRow<sub>1</sub> - zerosCol<sub>2</sub></code> = 2 + 3 - 1 - 0 = 4
|
||||
- diff[2][0] = <code>onesRow<sub>2</sub> + onesCol<sub>0</sub> - zerosRow<sub>2</sub> - zerosCol<sub>0</sub></code> = 1 + 1 - 2 - 2 = -2
|
||||
- diff[2][1] = <code>onesRow<sub>2</sub> + onesCol<sub>1</sub> - zerosRow<sub>2</sub> - zerosCol<sub>1</sub></code> = 1 + 1 - 2 - 2 = -2
|
||||
- diff[2][2] = <code>onesRow<sub>2</sub> + onesCol<sub>2</sub> - zerosRow<sub>2</sub> - zerosCol<sub>2</sub></code> = 1 + 3 - 2 - 0 = 2
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<p><img src="https://assets.leetcode.com/uploads/2022/11/06/image-20221106171747-6.png" style="width: 358px; height: 150px;"></p>
|
||||
|
||||
<pre><b>输入:</b>grid = [[1,1,1],[1,1,1]]
|
||||
<b>输出:</b>[[5,5,5],[5,5,5]]
|
||||
<strong>解释:</strong>
|
||||
- diff[0][0] = onesRow<sub>0</sub> + onesCol<sub>0</sub> - zerosRow<sub>0</sub> - zerosCol<sub>0</sub> = 3 + 2 - 0 - 0 = 5
|
||||
- diff[0][1] = onesRow<sub>0</sub> + onesCol<sub>1</sub> - zerosRow<sub>0</sub> - zerosCol<sub>1</sub> = 3 + 2 - 0 - 0 = 5
|
||||
- diff[0][2] = onesRow<sub>0</sub> + onesCol<sub>2</sub> - zerosRow<sub>0</sub> - zerosCol<sub>2</sub> = 3 + 2 - 0 - 0 = 5
|
||||
- diff[1][0] = onesRow<sub>1</sub> + onesCol<sub>0</sub> - zerosRow<sub>1</sub> - zerosCol<sub>0</sub> = 3 + 2 - 0 - 0 = 5
|
||||
- diff[1][1] = onesRow<sub>1</sub> + onesCol<sub>1</sub> - zerosRow<sub>1</sub> - zerosCol<sub>1</sub> = 3 + 2 - 0 - 0 = 5
|
||||
- diff[1][2] = onesRow<sub>1</sub> + onesCol<sub>2</sub> - zerosRow<sub>1</sub> - zerosCol<sub>2</sub> = 3 + 2 - 0 - 0 = 5
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>m == grid.length</code></li>
|
||||
<li><code>n == grid[i].length</code></li>
|
||||
<li><code>1 <= m, n <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= m * n <= 10<sup>5</sup></code></li>
|
||||
<li><code>grid[i][j]</code> 要么是 <code>0</code> ,要么是 <code>1</code> 。</li>
|
||||
</ul>
|
@@ -0,0 +1,44 @@
|
||||
<p>给你两个仅由小写英文字母组成的字符串 <code>s</code> 和 <code>t</code> 。</p>
|
||||
|
||||
<p>现在需要通过向 <code>s</code> 末尾追加字符的方式使 <code>t</code> 变成 <code>s</code> 的一个 <strong>子序列</strong> ,返回需要追加的最少字符数。</p>
|
||||
|
||||
<p>子序列是一个可以由其他字符串删除部分(或不删除)字符但不改变剩下字符顺序得到的字符串。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>s = "coaching", t = "coding"
|
||||
<strong>输出:</strong>4
|
||||
<strong>解释:</strong>向 s 末尾追加字符串 "ding" ,s = "coachingding" 。
|
||||
现在,t 是 s ("<em><strong>co</strong></em>aching<em><strong>ding</strong></em>") 的一个子序列。
|
||||
可以证明向 s 末尾追加任何 3 个字符都无法使 t 成为 s 的一个子序列。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>s = "abcde", t = "a"
|
||||
<strong>输出:</strong>0
|
||||
<strong>解释:</strong>t 已经是 s ("<em><strong>a</strong></em>bcde") 的一个子序列。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>s = "z", t = "abcde"
|
||||
<strong>输出:</strong>5
|
||||
<strong>解释:</strong>向 s 末尾追加字符串 "abcde" ,s = "zabcde" 。
|
||||
现在,t 是 s ("z<em><strong>abcde</strong></em>") 的一个子序列。
|
||||
可以证明向 s 末尾追加任何 4 个字符都无法使 t 成为 s 的一个子序列。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= s.length, t.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>s</code> 和 <code>t</code> 仅由小写英文字母组成</li>
|
||||
</ul>
|
Reference in New Issue
Block a user