1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-13 03:11:42 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee

国内版题目测试下载

This commit is contained in:
2022-03-27 20:23:58 +08:00
parent e2daac1e0a
commit 5a4fa6db12
44 changed files with 4112 additions and 4 deletions

View File

@@ -0,0 +1,51 @@
「力扣挑战赛」 的入场仪式马上就要开始了,由于安保工作的需要,设置了可容纳人数总和为 `M``N` 个安检室,`capacities[i]` 记录第 `i` 个安检室可容纳人数。安检室拥有两种类型:
- 先进先出:在安检室中的所有观众中,最早进入安检室的观众最先离开
- 后进先出:在安检室中的所有观众中,最晚进入安检室的观众最先离开
![c24754f1a5ff56989340ba5004dc5eda.gif](https://pic.leetcode-cn.com/1628843202-cdFPSt-c24754f1a5ff56989340ba5004dc5eda.gif)
恰好 `M+1` 位入场的观众(编号从 0 开始)需要排队**依次**入场安检, 入场安检的规则如下:
- 观众需要先进入编号 `0` 的安检室
- 当观众将进入编号 `i` 的安检室时(`0 <= i < N`)
- 若安检室未到达可容纳人数上限,该观众可直接进入;
- 若安检室已到达可容纳人数上限,在该观众进入安检室之前需根据当前安检室类型选择一位观众离开后才能进入;
- 当观众离开编号 `i` 的安检室时 `0 <= i < N-1`),将进入编号 `i+1` 的安检室接受安检。
若可以任意设定每个安检室的类型,请问有多少种设定安检室类型的方案可以使得编号 `k` 的观众第一个通过最后一个安检室入场。
**注意:**
- 观众不可主动离开安检室,只有当安检室容纳人数达到上限,且又有新观众需要进入时,才可根据安检室的类型选择一位观众离开;
- 由于方案数可能过大,请将答案对 `1000000007` 取模后返回。
**示例 1**
> 输入:`capacities = [2,2,3], k = 2`
>
> 输出:`2`
> 解释:
> 存在两种设定的 `2` 种方案:
> - 方案 1将编号为 `0` 、`1` 的实验室设置为 **后进先出** 的类型,编号为 `2` 的实验室设置为 **先进先出** 的类型;
> - 方案 2将编号为 `0` 、`1` 的实验室设置为 **先进先出** 的类型,编号为 `2` 的实验室设置为 **后进先出** 的类型。
>
> 以下是方案 1 的示意图:
>![c60e38199a225ad62f13b954872edf9b.gif](https://pic.leetcode-cn.com/1628841618-bFKsnt-c60e38199a225ad62f13b954872edf9b.gif)
**示例 2**
> 输入:`capacities = [3,3], k = 3`
>
> 输出:`0`
**示例 3**
> 输入:`capacities = [4,3,2,2], k = 6`
>
> 输出:`2`
**提示:**
+ `1 <= capacities.length <= 200`
+ `1 <= capacities[i] <= 200`
+ `0 <= k <= sum(capacities)`

View File

@@ -0,0 +1,46 @@
前往「力扣挑战赛」场馆的道路上,有一个拥堵的十字路口,该十字路口由两条双向两车道的路交叉构成。由于信号灯故障,交警需要手动指挥拥堵车辆。假定路口没有新的来车且一辆车从一个车道驶入另一个车道所需的时间恰好为一秒钟,长度为 4 的一维字符串数组 `directions` 中按照 **东、南、西、北** 顺序记录了四个方向从最靠近路口到最远离路口的车辆计划开往的方向。其中:
- `"E"` 表示向东行驶;
- `"S"` 表示向南行驶;
- `"W"` 表示向西行驶;
- `"N"` 表示向北行驶。
交警每秒钟只能指挥各个车道距离路口最近的一辆车,且每次指挥需要满足如下规则:
- 同一秒钟内,一个方向的车道只允许驶出一辆车;
- 同一秒钟内,一个方向的车道只允许驶入一辆车;
- 同一秒钟内,车辆的行驶路线不可相交。
请返回最少需要几秒钟,该十字路口等候的车辆才能全部走完。
各个车道驶出的车辆可能的行驶路线如图所示:
![图片.png](https://pic.leetcode-cn.com/1630393755-gyPeMM-%E5%9B%BE%E7%89%87.png){:height="350px"}
**注意:**
- 测试数据保证不会出现掉头行驶指令,即某一方向的行驶车辆计划开往的方向不会是当前车辆所在的车道的方向;
- 表示堵塞车辆行驶方向的字符串仅用大写字母 `"E"``"N"``"W"``"S"` 表示。
**示例 1**
>输入:`directions = ["W","N","ES","W"]`
>
>输出:`2`
>
>解释:
>第 1 秒:东西方向排在最前的车先行,剩余车辆状态 `["","N","S","W"]`
>第 2 秒:南、西、北方向的车行驶,路口无等待车辆;
>因此最少需要 2 秒,返回 2。
**示例 2**
>输入:`directions = ["NS","WE","SE","EW"]`
>
>输出:`3`
>
>解释:
>第 1 秒:四个方向排在最前的车均可驶出;
>第 2 秒:东南方向的车驶出,剩余车辆状态 `["","","E","W"]`
>第 3 秒:西北方向的车驶出。
**提示:**
- `directions.length = 4`
- `0 <= directions[i].length <= 20`

View File

@@ -0,0 +1,51 @@
<p>给定一个链表数组,每个链表都已经按升序排列。</p>
<p>请将所有链表合并到一个升序链表中,返回合并后的链表。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>lists = [[1,4,5],[1,3,4],[2,6]]
<strong>输出:</strong>[1,1,2,3,4,4,5,6]
<strong>解释:</strong>链表数组如下:
[
1-&gt;4-&gt;5,
1-&gt;3-&gt;4,
2-&gt;6
]
将它们合并到一个有序链表中得到。
1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>lists = []
<strong>输出:</strong>[]
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>lists = [[]]
<strong>输出:</strong>[]
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>k == lists.length</code></li>
<li><code>0 &lt;= k &lt;= 10^4</code></li>
<li><code>0 &lt;= lists[i].length &lt;= 500</code></li>
<li><code>-10^4 &lt;= lists[i][j] &lt;= 10^4</code></li>
<li><code>lists[i]</code><strong>升序</strong> 排列</li>
<li><code>lists[i].length</code> 的总和不超过 <code>10^4</code></li>
</ul>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 23&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/merge-k-sorted-lists/">https://leetcode-cn.com/problems/merge-k-sorted-lists/</a></p>

View File

@@ -0,0 +1,36 @@
<p>给定两个整数 <code>n</code><code>k</code>,返回 <code>1 ... n</code> 中所有可能的 <code>k</code> 个数的组合。</p>
<p>&nbsp;</p>
<p><strong>示例 1:</strong></p>
<pre>
<strong>输入:</strong>&nbsp;n = 4, k = 2
<strong>输出:</strong>
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]</pre>
<p><strong>示例 2:</strong></p>
<pre>
<strong>输入:</strong>&nbsp;n = 1, k = 1
<strong>输出: </strong>[[1]]</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 20</code></li>
<li><code>1 &lt;= k &lt;= n</code></li>
</ul>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 77&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/combinations/">https://leetcode-cn.com/problems/combinations/</a></p>

View File

@@ -0,0 +1,23 @@
「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。
给定一棵二叉树 `root` 代表焰火,节点值表示巨型焰火这一位置的颜色种类。请帮小扣计算巨型焰火有多少种不同的颜色。
**示例 1**
>输入:`root = [1,3,2,1,null,2]`
>
>输出:`3`
>
>解释:焰火中有 3 个不同的颜色,值分别为 1、2、3
**示例 2**
>输入:`root = [3,3,3]`
>
>输出:`1`
>
>解释:焰火中仅出现 1 个颜色,值为 3
**提示:**
- `1 <= 节点个数 <= 1000`
- `1 <= Node.val <= 1000`

View File

@@ -0,0 +1,22 @@
「力扣挑战赛」心算项目的挑战比赛中,要求选手从 `N` 张卡牌中选出 `cnt` 张卡牌,若这 `cnt` 张卡牌数字总和为偶数,则选手成绩「有效」且得分为 `cnt` 张卡牌数字总和。
给定数组 `cards``cnt`,其中 `cards[i]` 表示第 `i` 张卡牌上的数字。 请帮参赛选手计算最大的有效得分。若不存在获取有效得分的卡牌方案,则返回 0。
**示例 1**
>输入:`cards = [1,2,8,9], cnt = 3`
>
>输出:`18`
>
>解释:选择数字为 1、8、9 的这三张卡牌,此时可获得最大的有效得分 1+8+9=18。
**示例 2**
>输入:`cards = [3,3,1], cnt = 1`
>
>输出:`0`
>
>解释:不存在获取有效得分的卡牌方案。
**提示:**
- `1 <= cnt <= cards.length <= 10^5`
- `1 <= cards[i] <= 1000`

View File

@@ -0,0 +1,44 @@
「力扣挑战赛」有 `n` 个比赛场馆(场馆编号从 `0` 开始),场馆之间的通道分布情况记录于二维数组 `edges` 中,`edges[i]= [x, y]` 表示第 `i` 条通道连接场馆 `x` 和场馆 `y`(即两个场馆相邻)。初始每个场馆中都有一定人数的志愿者(不同场馆人数可能不同),后续 `m` 天每天均会根据赛事热度进行志愿者人数调配。调配方案分为如下三种:
1. 将编号为 `idx` 的场馆内的志愿者人数减半;
2. 将编号为 `idx` 的场馆相邻的场馆的志愿者人数都加上编号为 `idx` 的场馆的志愿者人数;
3. 将编号为 `idx` 的场馆相邻的场馆的志愿者人数都减去编号为 `idx` 的场馆的志愿者人数。
所有的调配信息记录于数组 `plans` 中,`plans[i] = [num,idx]` 表示第 `i` 天对编号 `idx` 的场馆执行了第 `num` 种调配方案。
在比赛结束后对调配方案进行复盘时,不慎将第 `0` 个场馆的**最终**志愿者人数丢失,只保留了**初始**所有场馆的志愿者总人数 `totalNum` ,以及记录了第 `1 ~ n-1` 个场馆的**最终**志愿者人数的一维数组 `finalCnt`。请你根据现有的信息求出初始每个场馆的志愿者人数,并按场馆编号顺序返回志愿者人数列表。
**注意:**
- 测试数据保证当某场馆进行第一种调配时,该场馆的志愿者人数一定为偶数;
- 测试数据保证当某场馆进行第三种调配时,该场馆的相邻场馆志愿者人数不为负数;
- 测试数据保证比赛开始时每个场馆的志愿者人数都不超过 `10^9`
- 测试数据保证给定的场馆间的道路分布情况中不会出现自环、重边的情况。
**示例 1**
>![image.png](https://pic.leetcode-cn.com/1630061228-gnZsOz-image.png)
> 输入:
>`finalCnt = [1,16], totalNum = 21, edges = [[0,1],[1,2]], plans = [[2,1],[1,0],[3,0]]`
>
> 输出:`[5,7,9]`
>
> 解释:
> ![image.png](https://pic.leetcode-cn.com/1630061300-WuVkeF-image.png){:height=200}
**示例 2 **
> 输入:
>`finalCnt = [4,13,4,3,8], totalNum = 54, edges = [[0,3],[1,3],[4,3],[2,3],[2,5]], plans = [[1,1],[3,3],[2,5],[1,0]]`
>
> 输出:`[10,16,9,4,7,8]`
**提示:**
- `2 <= n <= 5*10^4`
- `1 <= edges.length <= min((n * (n - 1)) / 2, 5*10^4)`
- `0 <= edges[i][0], edges[i][1] < n`
- `1 <= plans.length <= 10`
- `1 <= plans[i][0] <=3`
- `0 <= plans[i][1] < n`
- `finalCnt.length = n-1`
- `0 <= finalCnt[i] < 10^9`
- `0 <= totalNum < 5*10^13`

View File

@@ -0,0 +1,33 @@
<p>给定一个整数数组&nbsp;<code>nums</code> ,数组中的元素 <strong>互不相同</strong> 。返回该数组所有可能的子集(幂集)。</p>
<p>解集 <strong>不能</strong> 包含重复的子集。你可以按 <strong>任意顺序</strong> 返回解集。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [1,2,3]
<strong>输出:</strong>[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [0]
<strong>输出:</strong>[[],[0]]
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10</code></li>
<li><code>-10 &lt;= nums[i] &lt;= 10</code></li>
<li><code>nums</code> 中的所有元素 <strong>互不相同</strong></li>
</ul>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 78&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/subsets/">https://leetcode-cn.com/problems/subsets/</a></p>

View File

@@ -0,0 +1,31 @@
<p>给定整数数组 <code>nums</code> 和整数 <code>k</code>,请返回数组中第 <code><strong>k</strong></code> 个最大的元素。</p>
<p>请注意,你需要找的是数组排序后的第 <code>k</code> 个最大的元素,而不是第 <code>k</code> 个不同的元素。</p>
<p>&nbsp;</p>
<p><strong>示例 1:</strong></p>
<pre>
<strong>输入:</strong> <code>[3,2,1,5,6,4] 和</code> k = 2
<strong>输出:</strong> 5
</pre>
<p><strong>示例&nbsp;2:</strong></p>
<pre>
<strong>输入:</strong> <code>[3,2,3,1,2,4,5,5,6] 和</code> k = 4
<strong>输出:</strong> 4</pre>
<p>&nbsp;</p>
<p><strong>提示: </strong></p>
<ul>
<li><code>1 &lt;= k &lt;= nums.length &lt;= 10<sup>4</sup></code></li>
<li><code>-10<sup>4</sup>&nbsp;&lt;= nums[i] &lt;= 10<sup>4</sup></code></li>
</ul>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 215&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/kth-largest-element-in-an-array/">https://leetcode-cn.com/problems/kth-largest-element-in-an-array/</a></p>

View File

@@ -0,0 +1,45 @@
在 「力扣挑战赛」 开幕式的压轴节目 「无人机方阵」中,每一架无人机展示一种灯光颜色。 无人机方阵通过两种操作进行颜色图案变换:
- 调整无人机的位置布局
- 切换无人机展示的灯光颜色
给定两个大小均为 `N*M` 的二维数组 `source``target` 表示无人机方阵表演的两种颜色图案,由于无人机切换灯光颜色的耗能很大,请返回从 `source``target` 最少需要多少架无人机切换灯光颜色。
**注意:** 调整无人机的位置布局时无人机的位置可以随意变动。
**示例 1**
> 输入:`source = [[1,3],[5,4]], target = [[3,1],[6,5]]`
>
> 输出:`1`
>
> 解释:
> 最佳方案为
`[0,1]` 处的无人机移动至 `[0,0]` 处;
`[0,0]` 处的无人机移动至 `[0,1]` 处;
`[1,0]` 处的无人机移动至 `[1,1]` 处;
`[1,1]` 处的无人机移动至 `[1,0]` 处,其灯光颜色切换为颜色编号为 `6` 的灯光;
因此从`source``target` 所需要的最少灯光切换次数为 1。
>![8819ccdd664e91c78cde3bba3c701986.gif](https://pic.leetcode-cn.com/1628823765-uCDaux-8819ccdd664e91c78cde3bba3c701986.gif){:height=300px}
**示例 2**
> 输入:`source = [[1,2,3],[3,4,5]], target = [[1,3,5],[2,3,4]]`
>
> 输出:`0`
> 解释:
> 仅需调整无人机的位置布局,便可完成图案切换。因此不需要无人机切换颜色
**提示:**
`n == source.length == target.length`
`m == source[i].length == target[i].length`
`1 <= n, m <=100`
`1 <= source[i][j], target[i][j] <=10^4`

View File

@@ -0,0 +1,35 @@
小力正在通过残局练习来备战「力扣挑战赛」中的「五子棋」项目,他想请你能帮他预测当前残局的输赢情况。棋盘中的棋子分布信息记录于二维数组 `pieces` 中,其中 `pieces[i] = [x,y,color]` 表示第 `i` 枚棋子的横坐标为 `x`,纵坐标为 `y`,棋子颜色为 `color`(`0` 表示黑棋,`1` 表示白棋)。假如黑棋先行,并且黑棋和白棋都按最优策略落子,请你求出当前棋局在三步(按 **黑、白、黑** 的落子顺序)之内的输赢情况(三步之内先构成同行、列或对角线连续同颜色的至少 5 颗即为获胜):
- 黑棋胜, 请返回 `"Black"`
- 白棋胜, 请返回 `"White"`
- 仍无胜者, 请返回 `"None"`
**注意:**
- 和传统的五子棋项目不同,「力扣挑战赛」中的「五子棋」项目 **不存在边界限制**,即可在 **任意位置** 落子;
- 黑棋和白棋均按 3 步内的输赢情况进行最优策略的选择
- 测试数据保证所给棋局目前无胜者;
- 测试数据保证不会存在坐标一样的棋子。
**示例 1**
> 输入:
> `pieces = [[0,0,1],[1,1,1],[2,2,0]]`
>
> 输出:`"None"`
>
> 解释:无论黑、白棋以何种方式落子,三步以内都不会产生胜者。
**示例 2**
> 输入:
> `pieces = [[1,2,1],[1,4,1],[1,5,1],[2,1,0],[2,3,0],[2,4,0],[3,2,1],[3,4,0],[4,2,1],[5,2,1]]`
>
> 输出:`"Black"`
>
> 解释:三步之内黑棋必胜,以下是一种可能的落子情况:
>![902b87df29998b1c181146c8fdb3a4b6.gif](https://pic.leetcode-cn.com/1629800639-KabOfY-902b87df29998b1c181146c8fdb3a4b6.gif){:width="300px"}
**提示:**
- `0 <= pieces.length <= 1000`
- `pieces[i].length = 3`
- `-10^9 <= pieces[i][0], pieces[i][1] <=10^9`
- `0 <= pieces[i][2] <=1`

View File

@@ -0,0 +1,37 @@
「力扣挑战赛」场地外,小力组织了一个套玩具的游戏。所有的玩具摆在平地上,`toys[i]``[xi,yi,ri]` 的形式记录了第 `i` 个玩具的坐标 `(xi,yi)` 和半径 `ri`。小扣试玩了一下,他扔了若干个半径均为 `r` 的圈,`circles[j]` 记录了第 `j` 个圈的坐标 `(xj,yj)`。套圈的规则如下:
- 若一个玩具被某个圈完整覆盖了(即玩具的任意部分均在圈内或者圈上),则该玩具被套中。
- 若一个玩具被多个圈同时套中,最终仅计算为套中一个玩具
请帮助小扣计算,他成功套中了多少玩具。
**注意:**
- 输入数据保证任意两个玩具的圆心不会重合,但玩具之间可能存在重叠。
**示例 1**
> 输入:`toys = [[3,3,1],[3,2,1]], circles = [[4,3]], r = 2`
>
> 输出:`1`
>
> 解释: 如图所示,仅套中一个玩具
![image.png](https://pic.leetcode-cn.com/1629194140-ydKiGF-image.png)
**示例 2**
> 输入:`toys = [[1,3,2],[4,3,1],[7,1,2]], circles = [[1,0],[3,3]], r = 4`
>
> 输出:`2`
>
> 解释: 如图所示,套中两个玩具
![image.png](https://pic.leetcode-cn.com/1629194157-RiOAuy-image.png){:width="400px"}
**提示:**
- `1 <= toys.length <= 10^4`
- `0 <= toys[i][0], toys[i][1] <= 10^9`
- `1 <= circles.length <= 10^4`
- `0 <= circles[i][0], circles[i][1] <= 10^9`
- `1 <= toys[i][2], r <= 10`

View File

@@ -0,0 +1,48 @@
「力扣挑战赛」中有一个由 `N` 个关卡组成的**环形**闯关游戏,关卡编号为 `0`~`N-1`,编号 `0` 的关卡和编号 `N-1` 的关卡相邻。每个关卡均有积分要求,`challenge[i]` 表示挑战编号 `i` 的关卡最少需要拥有的积分。
![图片.png](https://pic.leetcode-cn.com/1630392170-ucncVS-%E5%9B%BE%E7%89%87.png){:width="240px"}
小扣想要挑战关卡,闯关的具体规则如下:
- 初始小扣可以指定其中一个关卡为「开启」状态,其余关卡将处于「未开启」状态。
- 小扣可以挑战处于「开启」状态且**满足最少积分要求**的关卡,若小扣挑战该关卡前积分为 `score`,挑战结束后,积分将增长为 `score|challenge[i]`(即位运算中的 `"OR"` 运算)
- 在挑战某个关卡后,该关卡两侧相邻的关卡将会开启(若之前未开启)
请帮助小扣进行计算,初始最少需要多少积分,可以挑战 **环形闯关游戏** 的所有关卡。
**示例1**
> 输入:`challenge = [5,4,6,2,7]`
>
> 输出:`4`
>
> 解释: 初始选择编号 3 的关卡开启,积分为 4
>挑战编号 3 的关卡,积分变为 $4 | 2 = 6$,开启 2、4 处的关卡
>挑战编号 2 的关卡,积分变为 $6 | 6 = 6$,开启 1 处的关卡
>挑战编号 1 的关卡,积分变为 $6 | 4 = 6$,开启 0 处的关卡
>挑战编号 0 的关卡,积分变为 $6 | 5 = 7$
>挑战编号 4 的关卡,顺利完成全部的关卡
**示例2**
> 输入:`challenge = [12,7,11,3,9]`
>
> 输出:`8`
>
> 解释: 初始选择编号 3 的关卡开启,积分为 8
>挑战编号 3 的关卡,积分变为 $8 | 3 = 11$,开启 2、4 处的关卡
>挑战编号 2 的关卡,积分变为 $11 | 11 = 11$,开启 1 处的关卡
>挑战编号 4 的关卡,积分变为 $11 | 9 = 11$,开启 0 处的关卡
>挑战编号 1 的关卡,积分变为 $11 | 7 = 15$
>挑战编号 0 的关卡,顺利完成全部的关卡
**示例3**
> 输入:`challenge = [1,1,1]`
>
> 输出:`1`
**提示:**
- `1 <= challenge.length <= 5*10^4`
- `1 <= challenge[i] <= 10^18`

View File

@@ -0,0 +1,42 @@
<div class="original__bRMd">
<p><code>n</code> 个城市,其中一些彼此相连,另一些没有相连。如果城市 <code>a</code> 与城市 <code>b</code> 直接相连,且城市 <code>b</code> 与城市 <code>c</code> 直接相连,那么城市 <code>a</code> 与城市 <code>c</code> 间接相连。</p>
<p><strong>省份</strong> 是一组直接或间接相连的城市,组内不含其他没有相连的城市。</p>
<p>给你一个 <code>n x n</code> 的矩阵 <code>isConnected</code> ,其中 <code>isConnected[i][j] = 1</code> 表示第 <code>i</code> 个城市和第 <code>j</code> 个城市直接相连,而 <code>isConnected[i][j] = 0</code> 表示二者不直接相连。</p>
<p>返回矩阵中 <strong>省份</strong> 的数量。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2020/12/24/graph1.jpg" />
<pre>
<strong>输入:</strong>isConnected = [[1,1,0],[1,1,0],[0,0,1]]
<strong>输出:</strong>2
</pre>
<p><strong>示例 2</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2020/12/24/graph2.jpg" />
<pre>
<strong>输入:</strong>isConnected = [[1,0,0],[0,1,0],[0,0,1]]
<strong>输出:</strong>3
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 200</code></li>
<li><code>n == isConnected.length</code></li>
<li><code>n == isConnected[i].length</code></li>
<li><code>isConnected[i][j]</code><code>1</code><code>0</code></li>
<li><code>isConnected[i][i] == 1</code></li>
<li><code>isConnected[i][j] == isConnected[j][i]</code></li>
</ul>
</div>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 547&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/number-of-provinces/">https://leetcode-cn.com/problems/number-of-provinces/</a></p>

View File

@@ -0,0 +1,33 @@
「力扣挑战赛」中 `N*M` 大小的自行车炫技赛场的场地由一片连绵起伏的上下坡组成,场地的高度值记录于二维数组 `terrain` 中,场地的减速值记录于二维数组 `obstacle` 中。
- 若选手骑着自行车从高度为 `h1` 且减速值为 `o1` 的位置到高度为 `h2` 且减速值为 `o2` 的相邻位置(上下左右四个方向),速度变化值为 `h1-h2-o2`(负值减速,正值增速)。
选手初始位于坐标 `position` 处且初始速度为 1请问选手可以刚好到其他哪些位置时速度依旧为 1。请以二维数组形式返回这些位置。若有多个位置则按行坐标升序排列若有多个位置行坐标相同则按列坐标升序排列。
**注意:** 骑行过程中速度不能为零或负值
**示例 1**
> 输入`position = [0,0], terrain = [[0,0],[0,0]], obstacle = [[0,0],[0,0]]`
>
> 输出:`[[0,1],[1,0],[1,1]]`
>
> 解释:
> 由于当前场地属于平地,根据上面的规则,选手从`[0,0]`的位置出发都能刚好在其他处的位置速度为 1。
**示例 2**
> 输入`position = [1,1], terrain = [[5,0],[0,6]], obstacle = [[0,6],[7,0]]`
>
> 输出:`[[0,1]]`
>
> 解释:
> 选手从 `[1,1]` 处的位置出发,到 `[0,1]` 处的位置时恰好速度为 1。
**提示:**
- `n == terrain.length == obstacle.length`
- `m == terrain[i].length == obstacle[i].length`
- `1 <= n <= 100`
- `1 <= m <= 100`
- `0 <= terrain[i][j], obstacle[i][j] <= 100`
- `position.length == 2`
- `0 <= position[0] < n`
- `0 <= position[1] < m`

View File

@@ -0,0 +1,53 @@
<p>一个机器人位于一个 <code>m x n</code><em>&nbsp;</em>网格的左上角 (起始点在下图中标记为 &ldquo;Start&rdquo; )。</p>
<p>机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 &ldquo;Finish&rdquo; )。</p>
<p>问总共有多少条不同的路径?</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img src="https://assets.leetcode.com/uploads/2018/10/22/robot_maze.png" /></p>
<pre>
<strong>输入:</strong>m = 3, n = 7
<strong>输出:</strong>28</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>m = 3, n = 2
<strong>输出:</strong>3
<strong>解释:</strong>
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -&gt; 向下 -&gt; 向下
2. 向下 -&gt; 向下 -&gt; 向右
3. 向下 -&gt; 向右 -&gt; 向下
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>m = 7, n = 3
<strong>输出:</strong>28
</pre>
<p><strong>示例 4</strong></p>
<pre>
<strong>输入:</strong>m = 3, n = 3
<strong>输出:</strong>6</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= m, n &lt;= 100</code></li>
<li>题目数据保证答案小于等于 <code>2 * 10<sup>9</sup></code></li>
</ul>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 62&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/unique-paths/">https://leetcode-cn.com/problems/unique-paths/</a></p>

View File

@@ -0,0 +1,48 @@
<p>给定链表的头结点&nbsp;<code>head</code>&nbsp;,请将其按 <strong>升序</strong> 排列并返回 <strong>排序后的链表</strong></p>
<ul>
</ul>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2020/09/14/sort_list_1.jpg" style="width: 302px; " /></p>
<pre>
<b>输入:</b>head = [4,2,1,3]
<b>输出:</b>[1,2,3,4]
</pre>
<p><strong>示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2020/09/14/sort_list_2.jpg" style="width: 402px; " /></p>
<pre>
<b>输入:</b>head = [-1,5,3,4,0]
<b>输出:</b>[-1,0,3,4,5]
</pre>
<p><strong>示例 3</strong></p>
<pre>
<b>输入:</b>head = []
<b>输出:</b>[]
</pre>
<p>&nbsp;</p>
<p><b>提示:</b></p>
<ul>
<li>链表中节点的数目在范围&nbsp;<code>[0, 5 * 10<sup>4</sup>]</code>&nbsp;</li>
<li><code>-10<sup>5</sup>&nbsp;&lt;= Node.val &lt;= 10<sup>5</sup></code></li>
</ul>
<p>&nbsp;</p>
<p><b>进阶:</b>你可以在&nbsp;<code>O(n&nbsp;log&nbsp;n)</code> 时间复杂度和常数级空间复杂度下,对链表进行排序吗?</p>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 148&nbsp;题相同:<a href="https://leetcode-cn.com/problems/sort-list/">https://leetcode-cn.com/problems/sort-list/</a></p>

View File

@@ -0,0 +1,43 @@
`n*m` 大小的棋盘中,有黑白两种棋子,黑棋记作字母 `"X"`, 白棋记作字母 `"O"`,空余位置记作 `"."`。当落下的棋子与其他相同颜色的棋子在行、列或对角线完全包围(中间不存在空白位置)另一种颜色的棋子,则可以翻转这些棋子的颜色。
![1.gif](https://pic.leetcode-cn.com/1630396029-eTgzpN-6da662e67368466a96d203f67bb6e793.gif){:height=170px}![2.gif](https://pic.leetcode-cn.com/1630396240-nMvdcc-8e4261afe9f60e05a4f740694b439b6b.gif){:height=170px}![3.gif](https://pic.leetcode-cn.com/1630396291-kEtzLL-6fcb682daeecb5c3f56eb88b23c81d33.gif){:height=170px}
「力扣挑战赛」黑白翻转棋项目中,将提供给选手一个未形成可翻转棋子的棋盘残局,其状态记作 `chessboard`。若下一步可放置一枚黑棋,请问选手最多能翻转多少枚白棋。
**注意:**
- 若翻转白棋成黑棋后,棋盘上仍存在可以翻转的白棋,将可以 **继续** 翻转白棋
- 输入数据保证初始棋盘状态无可以翻转的棋子且存在空余位置
**示例 1**
> 输入:`chessboard = ["....X.","....X.","XOOO..","......","......"]`
>
> 输出:`3`
>
> 解释:
> 可以选择下在 `[2,4]` 处,能够翻转白方三枚棋子。
**示例 2**
> 输入:`chessboard = [".X.",".O.","XO."]`
>
> 输出:`2`
>
> 解释:
> 可以选择下在 `[2,2]` 处,能够翻转白方两枚棋子。
![2126c1d21b1b9a9924c639d449cc6e65.gif](https://pic.leetcode-cn.com/1626683255-OBtBud-2126c1d21b1b9a9924c639d449cc6e65.gif)
**示例 3**
> 输入:`chessboard = [".......",".......",".......","X......",".O.....","..O....","....OOX"]`
>
> 输出:`4`
>
> 解释:
> 可以选择下在 `[6,3]` 处,能够翻转白方四枚棋子。
![803f2f04098b6174397d6c696f54d709.gif](https://pic.leetcode-cn.com/1630393770-Puyked-803f2f04098b6174397d6c696f54d709.gif)
**提示:**
- `1 <= chessboard.length, chessboard[i].length <= 8`
- `chessboard[i]` 仅包含 `"."、"O"``"X"`