Skip to content

Commit d667967

Browse files
committed
feat: update lc problems
1 parent 35ea005 commit d667967

File tree

45 files changed

+866
-302
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+866
-302
lines changed

solution/0000-0099/0001.Two Sum/README.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@
1414

1515
<p>&nbsp;</p>
1616

17-
<p><strong>示例 1:</strong></p>
17+
<p><strong class="example">示例 1:</strong></p>
1818

1919
<pre>
2020
<strong>输入:</strong>nums = [2,7,11,15], target = 9
2121
<strong>输出:</strong>[0,1]
2222
<strong>解释:</strong>因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
2323
</pre>
2424

25-
<p><strong>示例 2:</strong></p>
25+
<p><strong class="example">示例 2:</strong></p>
2626

2727
<pre>
2828
<strong>输入:</strong>nums = [3,2,4], target = 6
2929
<strong>输出:</strong>[1,2]
3030
</pre>
3131

32-
<p><strong>示例 3:</strong></p>
32+
<p><strong class="example">示例 3:</strong></p>
3333

3434
<pre>
3535
<strong>输入:</strong>nums = [3,3], target = 6
@@ -47,6 +47,8 @@
4747
<li><strong>只会存在一个有效答案</strong></li>
4848
</ul>
4949

50+
<p>&nbsp;</p>
51+
5052
<p><strong>进阶:</strong>你可以想出一个时间复杂度小于 <code>O(n<sup>2</sup>)</code> 的算法吗?</p>
5153

5254
## 解法

solution/0000-0099/0005.Longest Palindromic Substring/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
<p>给你一个字符串 <code>s</code>,找到 <code>s</code> 中最长的回文子串。</p>
1010

11+
<p>如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。</p>
12+
1113
<p>&nbsp;</p>
1214

1315
<p><strong>示例 1:</strong></p>

solution/0000-0099/0045.Jump Game II/README.md

+12-9
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,26 @@
66

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

9-
<p>给你一个非负整数数组 <code>nums</code> ,你最初位于数组的第一个位置。</p>
9+
<p>给定一个长度为 <code>n</code> 的 <strong>0 索引</strong>整数数组 <code>nums</code>。初始位置为 <code>nums[0]</code>。</p>
1010

11-
<p>数组中的每个元素代表你在该位置可以跳跃的最大长度。</p>
11+
<p>每个元素 <code>nums[i]</code> 表示从索引 <code>i</code> 向前跳转的最大长度。换句话说,如果你在 <code>nums[i]</code> 处,你可以跳转到任意 <code>nums[i + j]</code> 处:</p>
1212

13-
<p>你的目标是使用最少的跳跃次数到达数组的最后一个位置。</p>
13+
<ul>
14+
<li><code>0 &lt;= j &lt;= nums[i]</code>&nbsp;</li>
15+
<li><code>i + j &lt; n</code></li>
16+
</ul>
1417

15-
<p>假设你总是可以到达数组的最后一个位置。</p>
18+
<p>返回到达&nbsp;<code>nums[n - 1]</code> 的最小跳跃次数。生成的测试用例可以到达 <code>nums[n - 1]</code>。</p>
1619

17-
<p> </p>
20+
<p>&nbsp;</p>
1821

1922
<p><strong>示例 1:</strong></p>
2023

2124
<pre>
2225
<strong>输入:</strong> nums = [2,3,1,1,4]
2326
<strong>输出:</strong> 2
2427
<strong>解释:</strong> 跳到最后一个位置的最小跳跃数是 <code>2</code>。
25-
  从下标为 0 跳到下标为 1 的位置,跳 <code>1</code> 步,然后跳 <code>3</code> 步到达数组的最后一个位置。
28+
&nbsp; 从下标为 0 跳到下标为 1 的位置,跳&nbsp;<code>1</code>&nbsp;步,然后跳&nbsp;<code>3</code>&nbsp;步到达数组的最后一个位置。
2629
</pre>
2730

2831
<p><strong>示例 2:</strong></p>
@@ -32,13 +35,13 @@
3235
<strong>输出:</strong> 2
3336
</pre>
3437

35-
<p> </p>
38+
<p>&nbsp;</p>
3639

3740
<p><strong>提示:</strong></p>
3841

3942
<ul>
40-
<li><code>1 <= nums.length <= 10<sup>4</sup></code></li>
41-
<li><code>0 <= nums[i] <= 1000</code></li>
43+
<li><code>1 &lt;= nums.length &lt;= 10<sup>4</sup></code></li>
44+
<li><code>0 &lt;= nums[i] &lt;= 1000</code></li>
4245
</ul>
4346

4447
## 解法

solution/0000-0099/0050.Pow(x, n)/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<ul>
4040
<li><code>-100.0 &lt; x &lt; 100.0</code></li>
4141
<li><code>-2<sup>31</sup> &lt;= n &lt;= 2<sup>31</sup>-1</code></li>
42+
<li><code>n</code>&nbsp;是一个整数</li>
4243
<li><code>-10<sup>4</sup> &lt;= x<sup>n</sup> &lt;= 10<sup>4</sup></code></li>
4344
</ul>
4445

solution/0000-0099/0076.Minimum Window Substring/README.md

+10-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<p>给你一个字符串 <code>s</code> 、一个字符串 <code>t</code> 。返回 <code>s</code> 中涵盖 <code>t</code> 所有字符的最小子串。如果 <code>s</code> 中不存在涵盖 <code>t</code> 所有字符的子串,则返回空字符串 <code>""</code> 。</p>
1010

11-
<p> </p>
11+
<p>&nbsp;</p>
1212

1313
<p><strong>注意:</strong></p>
1414

@@ -17,20 +17,22 @@
1717
<li>如果 <code>s</code> 中存在这样的子串,我们保证它是唯一的答案。</li>
1818
</ul>
1919

20-
<p> </p>
20+
<p>&nbsp;</p>
2121

2222
<p><strong>示例 1:</strong></p>
2323

2424
<pre>
2525
<strong>输入:</strong>s = "ADOBECODEBANC", t = "ABC"
2626
<strong>输出:</strong>"BANC"
27+
<strong>解释:</strong>最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。
2728
</pre>
2829

2930
<p><strong>示例 2:</strong></p>
3031

3132
<pre>
3233
<strong>输入:</strong>s = "a", t = "a"
3334
<strong>输出:</strong>"a"
35+
<strong>解释:</strong>整个字符串 s 是最小覆盖子串。
3436
</pre>
3537

3638
<p><strong>示例 3:</strong></p>
@@ -41,17 +43,19 @@
4143
<strong>解释:</strong> t 中两个字符 'a' 均应包含在 s 的子串中,
4244
因此没有符合条件的子字符串,返回空字符串。</pre>
4345

44-
<p> </p>
46+
<p>&nbsp;</p>
4547

4648
<p><strong>提示:</strong></p>
4749

4850
<ul>
49-
<li><code>1 <= s.length, t.length <= 10<sup>5</sup></code></li>
51+
<li><code><sup>m == s.length</sup></code></li>
52+
<li><code><sup>n == t.length</sup></code></li>
53+
<li><code>1 &lt;= m, n &lt;= 10<sup>5</sup></code></li>
5054
<li><code>s</code> 和 <code>t</code> 由英文字母组成</li>
5155
</ul>
5256

53-
<p> </p>
54-
<strong>进阶:</strong>你能设计一个在 <code>o(n)</code> 时间内解决此问题的算法吗?
57+
<p>&nbsp;</p>
58+
<strong>进阶:</strong>你能设计一个在 <code>o(m+n)</code> 时间内解决此问题的算法吗?
5559

5660
## 解法
5761

solution/0200-0299/0295.Find Median from Data Stream/README.md

+36-20
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,51 @@
66

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

9-
<p>中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。</p>
9+
<p><strong>中位数</strong>是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。</p>
1010

11-
<p>例如,</p>
12-
13-
<p>[2,3,4]&nbsp;的中位数是 3</p>
14-
15-
<p>[2,3] 的中位数是 (2 + 3) / 2 = 2.5</p>
11+
<ul>
12+
<li>例如 <code>arr = [2,3,4]</code>&nbsp;的中位数是 <code>3</code>&nbsp;。</li>
13+
<li>例如&nbsp;<code>arr = [2,3]</code> 的中位数是 <code>(2 + 3) / 2 = 2.5</code> 。</li>
14+
</ul>
1615

17-
<p>设计一个支持以下两种操作的数据结构:</p>
16+
<p>实现 MedianFinder 类:</p>
1817

1918
<ul>
20-
<li>void addNum(int num) - 从数据流中添加一个整数到数据结构中。</li>
21-
<li>double findMedian() - 返回目前所有元素的中位数。</li>
19+
<li>
20+
<p><code>MedianFinder() </code>初始化 <code>MedianFinder</code>&nbsp;对象。</p>
21+
</li>
22+
<li>
23+
<p><code>void addNum(int num)</code> 将数据流中的整数 <code>num</code> 添加到数据结构中。</p>
24+
</li>
25+
<li>
26+
<p><code>double findMedian()</code> 返回到目前为止所有元素的中位数。与实际答案相差&nbsp;<code>10<sup>-5</sup></code>&nbsp;以内的答案将被接受。</p>
27+
</li>
2228
</ul>
2329

24-
<p><strong>示例:</strong></p>
30+
<p><strong>示例 1:</strong></p>
2531

26-
<pre>addNum(1)
27-
addNum(2)
28-
findMedian() -&gt; 1.5
29-
addNum(3)
30-
findMedian() -&gt; 2</pre>
32+
<pre>
33+
<strong>输入</strong>
34+
["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"]
35+
[[], [1], [2], [], [3], []]
36+
<strong>输出</strong>
37+
[null, null, null, 1.5, null, 2.0]
3138

32-
<p><strong>进阶:</strong></p>
39+
<strong>解释</strong>
40+
MedianFinder medianFinder = new MedianFinder();
41+
medianFinder.addNum(1); // arr = [1]
42+
medianFinder.addNum(2); // arr = [1, 2]
43+
medianFinder.findMedian(); // 返回 1.5 ((1 + 2) / 2)
44+
medianFinder.addNum(3); // arr[1, 2, 3]
45+
medianFinder.findMedian(); // return 2.0</pre>
3346

34-
<ol>
35-
<li>如果数据流中所有整数都在 0 到 100 范围内,你将如何优化你的算法?</li>
36-
<li>如果数据流中 99% 的整数都在 0 到 100 范围内,你将如何优化你的算法?</li>
37-
</ol>
47+
<p><strong>提示:</strong></p>
48+
49+
<ul>
50+
<li><code>-10<sup>5</sup>&nbsp;&lt;= num &lt;= 10<sup>5</sup></code></li>
51+
<li>在调用 <code>findMedian</code>&nbsp;之前,数据结构中至少有一个元素</li>
52+
<li>最多&nbsp;<code>5 * 10<sup>4</sup></code>&nbsp;次调用&nbsp;<code>addNum</code>&nbsp;和&nbsp;<code>findMedian</code></li>
53+
</ul>
3854

3955
## 解法
4056

solution/0200-0299/0298.Binary Tree Longest Consecutive Sequence/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
&nbsp;
1313

1414
<p><strong>示例 1:</strong></p>
15-
<img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/0200-0299/0298.Binary%20Tree%20Longest%20Consecutive%20Sequence/images/consec1-1-tree.jpg" style="width: 322px; height: 421px;" />
15+
<img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/0200-0299/0298.Binary%20Tree%20Longest%20Consecutive%20Sequence/images/consec1-1-tree.jpg" style="width: 306px; height: 400px;" />
1616
<pre>
1717
<strong>输入:</strong>root = [1,null,3,2,4,null,null,null,5]
1818
<strong>输出:</strong>3
1919
<strong>解释:</strong>当中,最长连续序列是 <code>3-4-5 ,所以</code>返回结果为 <code>3 。</code>
2020
</pre>
2121

2222
<p><strong>示例 2:</strong></p>
23-
<img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/0200-0299/0298.Binary%20Tree%20Longest%20Consecutive%20Sequence/images/consec1-2-tree.jpg" style="width: 262px; height: 421px;" />
23+
<img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/0200-0299/0298.Binary%20Tree%20Longest%20Consecutive%20Sequence/images/consec1-2-tree.jpg" style="width: 249px; height: 400px;" />
2424
<pre>
2525
<strong>输入:</strong>root = [2,null,3,2,null,1]
2626
<strong>输出:</strong>2

solution/0300-0399/0308.Range Sum Query 2D - Mutable/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66

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

9-
<p>给你一个二维矩阵 <code>matrix</code> ,你需要处理下面两种类型的若干次查询:</p>
9+
<p>给你一个二维矩阵 <code>matrix</code> ,处理以下类型的多个查询:</p>
1010

1111
<ol>
12-
<li><strong>更新</strong>更新 <code>matrix</code> 中某个单元的值。</li>
13-
<li><strong>求和:</strong>计算矩阵&nbsp;<code>matrix</code> 中某一矩形区域元素的 <strong>和</strong> ,该区域由 <strong>左上角</strong> <code>(row1, col1)</code> 和 <strong>右下角</strong> <code>(row2, col2)</code> 界定。</li>
12+
<li><strong>更新</strong> <code>matrix</code> 中单元格的值。</li>
13+
<li>计算由&nbsp;<strong>左上角</strong> <code>(row1, col1)</code> 和&nbsp;<strong>右下角</strong> <code>(row2, col2)</code> 定义的 <code>matrix</code>&nbsp;内矩阵元素的&nbsp;<strong>和</strong>。</li>
1414
</ol>
1515

1616
<p>实现 <code>NumMatrix</code> 类:</p>
1717

1818
<ul>
1919
<li><code>NumMatrix(int[][] matrix)</code> 用整数矩阵&nbsp;<code>matrix</code> 初始化对象。</li>
20-
<li><code>void update(int row, int col, int val)</code> 更新 <code>matrix[row][col]</code> 的值到 <code>val</code> 。</li>
20+
<li><code>void update(int row, int col, int val)</code> <strong>更新</strong> <code>matrix[row][col]</code> 的值到 <code>val</code> 。</li>
2121
<li><code>int sumRegion(int row1, int col1, int row2, int col2)</code> 返回矩阵&nbsp;<code>matrix</code> 中指定矩形区域元素的 <strong>和</strong> ,该区域由 <strong>左上角</strong> <code>(row1, col1)</code> 和 <strong>右下角</strong> <code>(row2, col2)</code> 界定。</li>
2222
</ul>
2323

solution/0300-0399/0345.Reverse Vowels of a String/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<p>给你一个字符串 <code>s</code> ,仅反转字符串中的所有元音字母,并返回结果字符串。</p>
1010

11-
<p>元音字母包括 <code>'a'</code>、<code>'e'</code>、<code>'i'</code>、<code>'o'</code>、<code>'u'</code>,且可能以大小写两种形式出现。</p>
11+
<p>元音字母包括 <code>'a'</code>、<code>'e'</code>、<code>'i'</code>、<code>'o'</code>、<code>'u'</code>,且可能以大小写两种形式出现不止一次。</p>
1212

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

solution/0400-0499/0420.Strong Password Checker/README.md

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

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

9-
<p>&nbsp;</p>
10-
如果一个密码满足下述所有条件,则认为这个密码是强密码:
9+
<p>满足以下条件的密码被认为是强密码:</p>
1110

1211
<ul>
1312
<li>由至少 <code>6</code> 个,至多 <code>20</code> 个字符组成。</li>
14-
<li>至少包含 <strong>一个小写 </strong>字母,<strong>一个大写</strong> 字母,<strong>一个数字</strong> 。</li>
15-
<li>同一字符 <strong>不能 </strong>连续出现三次 (比如 <code>"...aaa..."</code> 是不允许的, 但是&nbsp;<code>"...aa...a..."</code> 如果满足其他条件也可以算是强密码)。</li>
13+
<li>包含至少 <strong>一个小写 </strong>字母,至少&nbsp;<strong>一个大写</strong> 字母,和至少&nbsp;<strong>一个数字</strong> 。</li>
14+
<li>不包含连续三个重复字符 (比如 <code>"<strong>...aaa...</strong>"</code> 是不允许的, 但是&nbsp;<code>"<strong>...aa...a...</strong>"</code> 如果满足其他条件也可以算是强密码)。</li>
1615
</ul>
1716

1817
<p>给你一个字符串 <code>password</code> ,返回&nbsp;<em>将 <code>password</code> 修改到满足强密码条件需要的最少修改步数。如果 <code>password</code> 已经是强密码,则返回 <code>0</code> 。</em></p>

solution/0400-0499/0444.Sequence Reconstruction/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Solution:
9292
for a, b in pairwise(seq):
9393
g[a - 1].append(b - 1)
9494
indeg[b - 1] += 1
95-
q = deque([i for i, v in enumerate(indeg) if v == 0])
95+
q = deque(i for i, v in enumerate(indeg) if v == 0)
9696
while q:
9797
if len(q) > 1:
9898
return False

solution/0400-0499/0444.Sequence Reconstruction/README_EN.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class Solution:
8383
for a, b in pairwise(seq):
8484
g[a - 1].append(b - 1)
8585
indeg[b - 1] += 1
86-
q = deque([i for i, v in enumerate(indeg) if v == 0])
86+
q = deque(i for i, v in enumerate(indeg) if v == 0)
8787
while q:
8888
if len(q) > 1:
8989
return False

solution/0400-0499/0444.Sequence Reconstruction/Solution.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def sequenceReconstruction(
88
for a, b in pairwise(seq):
99
g[a - 1].append(b - 1)
1010
indeg[b - 1] += 1
11-
q = deque([i for i, v in enumerate(indeg) if v == 0])
11+
q = deque(i for i, v in enumerate(indeg) if v == 0)
1212
while q:
1313
if len(q) > 1:
1414
return False

0 commit comments

Comments
 (0)