Skip to content

Commit cc527fc

Browse files
committed
chore: update lc problems
1 parent 40999a2 commit cc527fc

File tree

19 files changed

+196
-170
lines changed

19 files changed

+196
-170
lines changed

solution/0000-0099/0027.Remove Element/README.md

+12-12
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
<!-- 这里写题目描述 -->
88

9-
<p>给你一个数组 <code>nums</code><em> </em>和一个值 <code>val</code>,你需要 <strong><a href="https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95" target="_blank">原地</a></strong> 移除所有数值等于 <code>val</code><em> </em>的元素,并返回移除后数组的新长度。</p>
9+
<p>给你一个数组 <code>nums</code><em>&nbsp;</em>和一个值 <code>val</code>,你需要 <strong><a href="https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95" target="_blank">原地</a></strong> 移除所有数值等于&nbsp;<code>val</code><em>&nbsp;</em>的元素,并返回移除后数组的新长度。</p>
1010

1111
<p>不要使用额外的数组空间,你必须仅使用 <code>O(1)</code> 额外空间并 <strong><a href="https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95" target="_blank">原地 </a>修改输入数组</strong>。</p>
1212

1313
<p>元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。</p>
1414

15-
<p> </p>
15+
<p>&nbsp;</p>
1616

1717
<p><strong>说明:</strong></p>
1818

@@ -28,37 +28,37 @@ int len = removeElement(nums, val);
2828

2929
// 在函数里修改输入数组对于调用者是可见的。
3030
// 根据你的函数返回的长度, 它会打印出数组中<strong> 该长度范围内</strong> 的所有元素。
31-
for (int i = 0; i < len; i++) {
32-
    print(nums[i]);
31+
for (int i = 0; i &lt; len; i++) {
32+
&nbsp; &nbsp; print(nums[i]);
3333
}
3434
</pre>
3535

36-
<p> </p>
36+
<p>&nbsp;</p>
3737

3838
<p><strong>示例 1:</strong></p>
3939

4040
<pre>
4141
<strong>输入:</strong>nums = [3,2,2,3], val = 3
4242
<strong>输出:</strong>2, nums = [2,2]
43-
<strong>解释:</strong>函数应该返回新的长度 <strong>2</strong>, 并且 nums<em> </em>中的前两个元素均为 <strong>2</strong>。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。
43+
<strong>解释:</strong>函数应该返回新的长度 <strong><code>2</code></strong>, 并且 nums<em> </em>中的前两个元素均为 <strong>2</strong>。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。
4444
</pre>
4545

4646
<p><strong>示例 2:</strong></p>
4747

4848
<pre>
4949
<strong>输入:</strong>nums = [0,1,2,2,3,0,4,2], val = 2
50-
<strong>输出:</strong>5, nums = [0,1,4,0,3]
51-
<strong>解释:</strong>函数应该返回新的长度 <strong><code>5</code></strong>, 并且 nums 中的前五个元素为 <strong><code>0</code></strong>, <strong><code>1</code></strong>, <strong><code>3</code></strong>, <strong><code>0</code></strong>, <strong>4</strong>。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
50+
<strong>输出:</strong>5, nums = [0,1,3,0,4]
51+
<strong>解释:</strong>函数应该返回新的长度 <strong><code>5</code></strong>, 并且 nums 中的前五个元素为 <strong><code>0</code></strong>, <strong><code>1</code></strong>, <strong><code>3</code></strong>, <strong><code>0</code></strong>, <strong><code>4</code></strong>。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
5252
</pre>
5353

54-
<p> </p>
54+
<p>&nbsp;</p>
5555

5656
<p><strong>提示:</strong></p>
5757

5858
<ul>
59-
<li><code>0 <= nums.length <= 100</code></li>
60-
<li><code>0 <= nums[i] <= 50</code></li>
61-
<li><code>0 <= val <= 100</code></li>
59+
<li><code>0 &lt;= nums.length &lt;= 100</code></li>
60+
<li><code>0 &lt;= nums[i] &lt;= 50</code></li>
61+
<li><code>0 &lt;= val &lt;= 100</code></li>
6262
</ul>
6363

6464
## 解法

solution/0200-0299/0205.Isomorphic Strings/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@
1717
<p><strong>示例 1:</strong></p>
1818

1919
<pre>
20-
<strong>输入:</strong>s = <code>"egg", </code>t = <code>"add"</code>
20+
<strong>输入:</strong>s = <code>"egg"</code>, t = <code>"add"</code>
2121
<strong>输出:</strong>true
2222
</pre>
2323

2424
<p><strong>示例 2:</strong></p>
2525

2626
<pre>
27-
<strong>输入:</strong>s = <code>"foo", </code>t = <code>"bar"</code>
27+
<strong>输入:</strong>s = <code>"foo"</code>, t = <code>"bar"</code>
2828
<strong>输出:</strong>false</pre>
2929

3030
<p><strong>示例 3:</strong></p>
3131

3232
<pre>
33-
<strong>输入:</strong>s = <code>"paper", </code>t = <code>"title"</code>
33+
<strong>输入:</strong>s = <code>"paper"</code>, t = <code>"title"</code>
3434
<strong>输出:</strong>true</pre>
3535

3636
<p>&nbsp;</p>

solution/0400-0499/0410.Split Array Largest Sum/README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66

77
<!-- 这里写题目描述 -->
88

9-
<p>给定一个非负整数数组 <code>nums</code> 和一个整数&nbsp;<code>m</code> ,你需要将这个数组分成&nbsp;<code>m</code><em>&nbsp;</em>个非空的连续子数组。</p>
9+
<p>给定一个非负整数数组 <code>nums</code> 和一个整数&nbsp;<code>k</code> ,你需要将这个数组分成&nbsp;<code>k</code><em>&nbsp;</em>个非空的连续子数组。</p>
1010

11-
<p>设计一个算法使得这&nbsp;<code>m</code><em>&nbsp;</em>个子数组各自和的最大值最小。</p>
11+
<p>设计一个算法使得这&nbsp;<code>k</code><em>&nbsp;</em>个子数组各自和的最大值最小。</p>
1212

1313
<p>&nbsp;</p>
1414

1515
<p><strong>示例 1:</strong></p>
1616

1717
<pre>
18-
<strong>输入:</strong>nums = [7,2,5,10,8], m = 2
18+
<strong>输入:</strong>nums = [7,2,5,10,8], k = 2
1919
<strong>输出:</strong>18
2020
<strong>解释:</strong>
2121
一共有四种方法将 nums 分割为 2 个子数组。
@@ -25,14 +25,14 @@
2525
<p><strong>示例 2:</strong></p>
2626

2727
<pre>
28-
<strong>输入:</strong>nums = [1,2,3,4,5], m = 2
28+
<strong>输入:</strong>nums = [1,2,3,4,5], k = 2
2929
<strong>输出:</strong>9
3030
</pre>
3131

3232
<p><strong>示例 3:</strong></p>
3333

3434
<pre>
35-
<strong>输入:</strong>nums = [1,4,4], m = 3
35+
<strong>输入:</strong>nums = [1,4,4], k = 3
3636
<strong>输出:</strong>4
3737
</pre>
3838

@@ -43,7 +43,7 @@
4343
<ul>
4444
<li><code>1 &lt;= nums.length &lt;= 1000</code></li>
4545
<li><code>0 &lt;= nums[i] &lt;= 10<sup>6</sup></code></li>
46-
<li><code>1 &lt;= m &lt;= min(50, nums.length)</code></li>
46+
<li><code>1 &lt;= k &lt;= min(50, nums.length)</code></li>
4747
</ul>
4848

4949
## 解法

solution/0400-0499/0489.Robot Room Cleaner/README.md

+50-31
Original file line numberDiff line numberDiff line change
@@ -6,59 +6,78 @@
66

77
<!-- 这里写题目描述 -->
88

9-
<p>房间(用格栅表示)中有一个扫地机器人。格栅中的每一个格子有空和障碍物两种可能。</p>
9+
<p>房间中的某个位置上有一个机器人,你需要控制它清扫房间。房间被建模为一个 <code>m x n</code> 的二进制网格,其中 <code>0</code> 表示单元格中有障碍物,<code>1</code> 表示空单元格。</p>
1010

11-
<p>扫地机器人提供4个API,可以向前进,向左转或者向右转。每次转弯90度。</p>
11+
<p>机器人从一个未知的空单元格开始出发,并且你无法访问网格,但你可以使用给定的 API <code>Robot</code> 控制机器人。</p>
1212

13-
<p>当扫地机器人试图进入障碍物格子时,它的碰撞传感器会探测出障碍物,使它停留在原地。</p>
13+
<p>你的任务是使用机器人清扫整个房间(即清理房间中的每个空单元格)。机器人具有四个给定的API,可以前进、向左转或向右转。每次转弯 90 度。</p>
1414

15-
<p>请利用提供的4个API编写让机器人清理整个房间的算法。</p>
15+
<p>当机器人试图移动到一个存在障碍物的单元格时,它的碰撞传感器会检测到障碍物,并停留在当前单元格。</p>
16+
17+
<p>设计一个算法,使用下述 API 清扫整个房间:</p>
1618

1719
<pre>
1820
interface Robot {
19-
&nbsp; // 若下一个方格为空,则返回true,并移动至该方格
20-
&nbsp; // 若下一个方格为障碍物,则返回false,并停留在原地
21+
&nbsp; // 若下一个单元格为空,则返回 true ,并移动至该单元格。
22+
&nbsp; // 若下一个单元格为障碍物,则返回 false ,并停留在当前单元格。
2123
&nbsp; boolean move();
2224

23-
// 在调用turnLeft/turnRight后机器人会停留在原位置
24-
&nbsp; // 每次转弯90度
25+
// 在调用 turnLeft/turnRight 后机器人会停留在当前单元格。
26+
&nbsp; // 每次转弯 90 度。
2527
&nbsp; void turnLeft();
2628
&nbsp; void turnRight();
2729

28-
// 清理所在方格
30+
// 清理当前单元格。
2931
void clean();
3032
}
3133
</pre>
3234

33-
<p><strong>示例:</strong></p>
35+
<p><strong>注意</strong> 扫地机器人的初始方向向上。你可以假定网格的四周都被墙包围。</p>
36+
37+
<p>&nbsp;</p>
38+
39+
<p><strong>自定义测试:</strong></p>
40+
41+
<p>输入只用于初始化房间和机器人的位置。你需要「盲解」这个问题。换而言之,你必须在对房间和机器人位置一无所知的情况下,只使用 4 个给出的 API 解决问题。&nbsp;</p>
42+
43+
<p>&nbsp;</p>
3444

35-
<p><strong><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/0400-0499/0489.Robot%20Room%20Cleaner/images/1695782910-iCEGqJ-image.png" style="width: 644px; height: 405px;" /></strong></p>
45+
<p><strong>示例 1:</strong></p>
46+
<img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/0400-0499/0489.Robot%20Room%20Cleaner/images/lc-grid.jpg" style="width: 500px; height: 314px;" />
47+
<pre>
48+
<strong>输入:</strong>room = [[1,1,1,1,1,0,1,1],[1,1,1,1,1,0,1,1],[1,0,1,1,1,1,1,1],[0,0,0,1,0,0,0,0],[1,1,1,1,1,1,1,1]], row = 1, col = 3
49+
<strong>输出:</strong>Robot cleaned all rooms.
50+
<strong>解释:</strong>
51+
房间内的所有单元格用 0 或 1 填充。
52+
0 表示障碍物,1 表示可以通过。
53+
机器人从 row=1, col=3 的初始位置出发。
54+
在左上角的一行以下,三列以右。
55+
</pre>
56+
57+
<p><strong>示例 2:</strong></p>
3658

3759
<pre>
38-
<strong>输入:</strong>
39-
room = [
40-
[1,1,1,1,1,0,1,1],
41-
[1,1,1,1,1,0,1,1],
42-
[1,0,1,1,1,1,1,1],
43-
[0,0,0,1,0,0,0,0],
44-
[1,1,1,1,1,1,1,1]
45-
],
46-
row = 1,
47-
col = 3
48-
49-
<strong>解析:</strong>
50-
房间格栅用0或1填充。0表示障碍物,1表示可以通过。
51-
机器人从row=1,col=3的初始位置出发。在左上角的一行以下,三列以右。
60+
<strong>输入:</strong>room = [[1]], row = 0, col = 0
61+
<strong>输出:</strong>Robot cleaned all rooms.
5262
</pre>
5363

54-
<p><strong>注意:</strong></p>
64+
<p>&nbsp;</p>
65+
66+
<p><strong>提示:</strong></p>
67+
68+
<ul>
69+
<li><code>m == room.length</code></li>
70+
<li><code>n == room[i].length</code></li>
71+
<li><code>1 &lt;= m &lt;= 100</code></li>
72+
<li><code>1 &lt;= n &lt;= 200</code></li>
73+
<li><code>room[i][j]</code> 为 <code>0</code> 或 <code>1</code>.</li>
74+
<li><code>0 &lt;= row &lt;&nbsp;m</code></li>
75+
<li><code>0 &lt;= col &lt; n</code></li>
76+
<li><code>room[row][col] == 1</code></li>
77+
<li>所有空单元格都可以从起始位置出发访问到。</li>
78+
</ul>
5579

5680
<ol>
57-
<li>输入只用于初始化房间和机器人的位置。你需要“盲解”这个问题。换而言之,你必须在对房间和机器人位置一无所知的情况下,只使用4个给出的API解决问题。&nbsp;</li>
58-
<li>扫地机器人的初始位置一定是空地。</li>
59-
<li>扫地机器人的初始方向向上。</li>
60-
<li>所有可抵达的格子都是相连的,亦即所有标记为1的格子机器人都可以抵达。</li>
61-
<li>可以假定格栅的四周都被墙包围。</li>
6281
</ol>
6382

6483
## 解法

solution/0500-0599/0532.K-diff Pairs in an Array/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<ul>
1414
<li><code>0 &lt;= i, j &lt; nums.length</code></li>
1515
<li><code>i != j</code></li>
16-
<li><code>nums[i] - nums[j] == k</code></li>
16+
<li><code>|nums[i] - nums[j]| == k</code></li>
1717
</ul>
1818

1919
<p><strong>注意</strong>,<code>|val|</code> 表示 <code>val</code> 的绝对值。</p>

solution/0600-0699/0631.Design Excel Sum Formula/README.md

+50-46
Original file line numberDiff line numberDiff line change
@@ -6,87 +6,91 @@
66

77
<!-- 这里写题目描述 -->
88

9-
<p>你的任务是实现 Excel 的求和功能,具体的操作如下:</p>
9+
<p>请你设计 <strong>Excel</strong> 中的基本功能,并实现求和公式。</p>
1010

11-
<p><code>Excel(int H, char W):</code> 这是一个构造函数,输入表明了 Excel 的高度和宽度。H 是一个正整数,范围从 1 到 26,代表高度。W 是一个字符,范围从 'A' 到 'Z',宽度等于从 'A' 到 W 的字母个数。Excel 表格是一个高度 * 宽度的二维整数数组,数组中元素初始化为 0。第一行下标从 1 开始,第一列下标从 'A' 开始。</p>
11+
<p>实现 <code>Excel</code> 类:</p>
1212

13-
<p> </p>
14-
15-
<p><code>void Set(int row, char column, int val):</code> 设置 <code>C(row, column)</code> 中的值为 val。</p>
16-
17-
<p> </p>
18-
19-
<p><code>int Get(int row, char column):</code> 返回 <code>C(row, column)</code> 中的值。</p>
20-
21-
<p> </p>
22-
23-
<p><code>int Sum(int row, char column, List of Strings : numbers):</code> 这个函数会将计算的结果放入 <code>C(row, column)</code> 中,计算的结果等于在 <code>numbers</code> 中代表的所有元素之和,这个函数同时也会将这个结果返回。求和公式会一直计算更新结果直到这个公式被其他的值或者公式覆盖。</p>
24-
25-
<p><code>numbers</code> 是若干字符串的集合,每个字符串代表单个位置或一个区间。如果这个字符串表示单个位置,它的格式如下:<code>ColRow</code>,例如 "F7" 表示位置 (7, F) 。如果这个字符串表示一个区间,它的格式如下:<code>ColRow1:ColRow2</code>。区间就是左上角为 ColRow1 右下角为 ColRow2 的长方形。</p>
13+
<ul>
14+
<li><code>Excel(int height, char width)</code>:用高度&nbsp;<code>height</code> 和宽度&nbsp;<code>width</code> 初始化对象。该表格是一个大小为 <code>height x width</code> 的整数矩阵 <code>mat</code>,其中行下标范围是 <code>[1, height]</code> ,列下标范围是 <code>['A', width]</code> 。初始情况下,所有的值都应该为 <strong>零</strong> 。</li>
15+
<li><code>void set(int row, char column, int val)</code>:将 <code>mat[row][column]</code> 的值更改为 <code>val</code> 。</li>
16+
<li><code>int get(int row, char column)</code>:返回 <code>mat[row][column]</code> 的值。</li>
17+
<li><code>int sum(int row, char column, List&lt;String&gt; numbers)</code>:将 <code>mat[row][column]</code> 的值设为由 <code>numbers</code> 表示的单元格的和,并返回 <code>mat[row][column]</code> 的值。此求和公式应该 <strong>长期作用于</strong> 该单元格,直到该单元格被另一个值或另一个求和公式覆盖。其中,<code>numbers[i]</code> 的格式可以为:
18+
<ul>
19+
<li><code>"ColRow"</code>:表示某个单元格。
20+
<ul>
21+
<li>例如,<code>"F7"</code> 表示单元格 <code>mat[7]['F']</code> 。</li>
22+
</ul>
23+
</li>
24+
<li><code>"ColRow1:ColRow2"</code>:表示一组单元格。该范围将始终为一个矩形,其中 <code>"ColRow1"</code> 表示左上角单元格的位置,<code>"ColRow2"</code> 表示右下角单元格的位置。
25+
<ul>
26+
<li>例如,<code>"B3:F7"</code> 表示 <code>3 &lt;= i &lt;= 7</code> 和 <code>'B' &lt;= j &lt;= 'F'</code> 的单元格 <code>mat[i][j]</code> 。</li>
27+
</ul>
28+
</li>
29+
</ul>
30+
</li>
31+
</ul>
2632

27-
<p> </p>
33+
<p><strong>注意:</strong>可以假设不会出现循环求和引用。</p>
2834

29-
<p><strong>注意: </strong>你可以认为不会出现循环求和的定义,比如说:<code>mat[1]['A'] == sum(1, "B")</code> 和 <code>mat[1]['B'] == sum(1, "A")</code>.</p>
35+
<ul>
36+
<li>例如,<code>mat[1]['A'] == sum(1, "B")</code>,且 <code>mat[1]['B'] == sum(1, "A")</code> 。</li>
37+
</ul>
3038

31-
<p> </p>
39+
<p>&nbsp;</p>
3240

33-
<p><strong>示例 1:</strong></p>
41+
<p><strong>示例 1</strong></p>
3442

3543
<pre>
36-
<strong>输入:</strong>
37-
["Excel", "set", "sum", "set", "get"]
44+
<strong>输入
45+
</strong>["Excel", "set", "sum", "set", "get"]
3846
[[3, "C"], [1, "A", 2], [3, "C", ["A1", "A1:B2"]], [2, "B", 2], [3, "C"]]
39-
<b>输出:</b>
47+
<strong>输出:</strong>
4048
[null, null, 4, null, 6]
4149

42-
<b>解释:</b>
50+
<strong>解释:</strong>
51+
执行以下操作:
4352
Excel excel = new Excel(3, "C");
44-
// 构造一个 3*3 的二维数组,初始化全是 0
53+
// 构造一个 3 * 3 的二维数组,所有值初始化为零
4554
// A B C
4655
// 1 0 0 0
4756
// 2 0 0 0
4857
// 3 0 0 0
4958
excel.set(1, "A", 2);
50-
// 设置 C(1,"A") 为 2
59+
// 将 mat[1]["A"] 设置为 2
5160
// A B C
5261
// 1 2 0 0
5362
// 2 0 0 0
5463
// 3 0 0 0
55-
excel.sum(3, "C", ["A1", "A1:B2"]); // return 4
56-
// 将 C(3,"C") 的值设为 C(1,"A") 单点以及左上角为 C(1,"A") 右下角为 C(2,"B") 的长方形两者之和。返回值 4。
64+
excel.sum(3, "C", ["A1", "A1:B2"]); // 返回 4
65+
// 将 mat[3]["C"] 设置为 mat[1]["A"] 的值与矩形范围的单元格和的和,该范围的左上角单元格位置为 mat[1]["A"] ,右下角单元格位置为 mat[2]["B"] 。
66+
// A B C
5767
// 1 2 0 0
5868
// 2 0 0 0
5969
// 3 0 0 4
6070
excel.set(2, "B", 2);
61-
// 将 C(2,"B") 设为 2。 注意 C(3, "C") 的值也同时改变
71+
// 将 mat[2]["B"] 设置为 2 。注意 mat[3]["C"] 也应该更改
6272
// A B C
6373
// 1 2 0 0
6474
// 2 0 2 0
6575
// 3 0 0 6
66-
excel.get(3, "C"); // 返回 6</pre>
76+
excel.get(3, "C"); // 返回 6
77+
</pre>
6778

68-
<p> </p>
79+
<p>&nbsp;</p>
6980

70-
<p><strong>提示:</strong></p>
81+
<p><strong>提示</strong></p>
7182

7283
<ul>
73-
<li><code>1 <= height <= 26</code></li>
74-
<li><code>'A' <= width <= 'Z'</code></li>
75-
<li><code>1 <= row <= height</code></li>
76-
<li><code>'A' <= column <= width</code></li>
77-
<li><code>-100 <= val <= 100</code></li>
78-
<li><code>1 <= numbers.length <= 5</code></li>
79-
<li><code>numbers[i]</code> 的格式为 <code>"ColRow"</code> 或 <code>"ColRow1:ColRow2"</code>.</li>
80-
<li><code>set</code><code>get</code>, and <code>sum</code> 操作数不超过 100</li>
84+
<li><code>1 &lt;= height &lt;= 26</code></li>
85+
<li><code>'A' &lt;= width &lt;= 'Z'</code></li>
86+
<li><code>1 &lt;= row &lt;= height</code></li>
87+
<li><code>'A' &lt;= column &lt;= width</code></li>
88+
<li><code>-100 &lt;= val &lt;= 100</code></li>
89+
<li><code>1 &lt;= numbers.length &lt;= 5</code></li>
90+
<li><code>numbers[i]</code> 的格式为 <code>"ColRow"</code><code>"ColRow1:ColRow2"</code></li>
91+
<li>最多会对 <code>set</code><code>get</code><code>sum</code> 进行 <code>100</code> 次调用。</li>
8192
</ul>
8293

83-
<p> </p>
84-
85-
<ol>
86-
</ol>
87-
88-
<p> </p>
89-
9094
## 解法
9195

9296
<!-- 这里可写通用的实现逻辑 -->

0 commit comments

Comments
 (0)