Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 865d9ee

Browse files
committed
更新题解列表
1 parent 71d1fd5 commit 865d9ee

File tree

4 files changed

+154
-34
lines changed

4 files changed

+154
-34
lines changed

‎Solutions/0202. 快乐数.md

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,47 @@
55

66
## 题目大意
77

8-
给定一个整数 n,判断 n 是否为快乐数
8+
**描述**:给定一个整数 $n$
99

10-
快乐数定义:
10+
**要求**:判断 $n$ 是否为快乐数。
1111

12-
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
13-
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
14-
- 如果 可以变为 1,那么这个数就是快乐数。
12+
**说明**:
13+
14+
- 快乐数定义:
15+
16+
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
17+
- 然后重复这个过程直到这个数变为 1ドル,ドル也可能是 无限循环 但始终变不到 1ドル$。
18+
- 如果 可以变为 1ドル,ドル那么这个数就是快乐数。
19+
- 1ドル \le n \le 2^{31} - 1$。
20+
21+
**示例**:
22+
23+
- 示例 1:
24+
25+
```python
26+
输入:n = 19
27+
输出:True
28+
解释:
29+
12 + 92 = 82
30+
82 + 22 = 68
31+
62 + 82 = 100
32+
12 + 02 + 02 = 1
33+
```
34+
35+
- 示例 2:
36+
37+
```python
38+
输入:n = 2
39+
输出:False
40+
```
1541

1642
## 解题思路
1743

18-
根据题意,不断重复操作,数可能变为 1,也可能是无限循环。无限循环其实就相当于链表形成了闭环,可以用哈希表来存储为一位生成的数,每次判断该数是否存在于哈希表中。如果已经出现在哈希表里,则说明进入了无限循环,该数就不是快乐数。如果没有出现则将该数加入到哈希表中,进行下一次计算。不断重复这个过程,直到形成闭环或者变为 1 。
44+
### 思路 1:哈希表 / 集合
1945

20-
## 代码
46+
根据题意,不断重复操作,数可能变为 1ドル,ドル也可能是无限循环。无限循环其实就相当于链表形成了闭环,可以用哈希表来存储为一位生成的数,每次判断该数是否存在于哈希表中。如果已经出现在哈希表里,则说明进入了无限循环,该数就不是快乐数。如果没有出现则将该数加入到哈希表中,进行下一次计算。不断重复这个过程,直到形成闭环或者变为 1ドル$。
47+
48+
### 思路 1:代码
2149

2250
```python
2351
class Solution:
@@ -37,3 +65,8 @@ class Solution:
3765
return n == 1
3866
```
3967

68+
### 思路 1:复杂度分析
69+
70+
- **时间复杂度**:$O(\log n)$。
71+
- **空间复杂度**:$O(\log n)$。
72+

‎Solutions/0205. 同构字符串.md

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,41 @@
55

66
## 题目大意
77

8-
给定两个字符串 st,判断两者是否是同构字符串
8+
**描述**:给定两个字符串 $s$$t$
99

10-
如果 s 中的字符可以按某种映射关系替换得到 t 相同位置上的字符,那么两个字符串是同构的
10+
**要求**:判断字符串 $s$ 和 $t$ 是否是同构字符串
1111

12-
每个字符都应当映射到另一个字符,且不改变字符顺序。不同字符不能映射到统一字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
12+
**说明**:
13+
14+
- **同构字符串**:如果 $s$ 中的字符可以按某种映射关系替换得到 $t$ 相同位置上的字符,那么两个字符串是同构的。
15+
- 每个字符都应当映射到另一个字符,且不改变字符顺序。不同字符不能映射到统一字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
16+
- 1ドル \le s.length \le 5 \times 10^4$。
17+
- $t.length == s.length$。
18+
- $s$ 和 $t$ 由任意有效的 ASCII 字符组成。
19+
20+
**示例**:
21+
22+
- 示例 1:
23+
24+
```python
25+
输入:s = "egg", t = "add"
26+
输出:True
27+
```
28+
29+
- 示例 2:
30+
31+
```python
32+
输入:s = "foo", t = "bar"
33+
输出:False
34+
```
1335

1436
## 解题思路
1537

16-
根据题目意思,s 和 t 每个位置上的字符是一一对应的。s 的每个字符都与 t 对应位置上的字符对应。可以考虑用哈希表来存储 s[i]: t[i] 的对应关系。但是这样不能只能保证对应位置上的字符是对应的,但不能保证是唯一对应的。所以还需要另一个哈希表来存储 t[i]:s[i] 的对应关系来判断是否是唯一对应的。
38+
### 思路 1:哈希表
1739

18-
## 代码
40+
根据题目意思,字符串 $s$ 和 $t$ 每个位置上的字符是一一对应的。$s$ 的每个字符都与 $t$ 对应位置上的字符对应。可以考虑用哈希表来存储 $s[i]: t[i]$ 的对应关系。但是这样不能只能保证对应位置上的字符是对应的,但不能保证是唯一对应的。所以还需要另一个哈希表来存储 $t[i]:s[i]$ 的对应关系来判断是否是唯一对应的。
41+
42+
### 思路 1:代码
1943

2044
```python
2145
class Solution:
@@ -32,3 +56,8 @@ class Solution:
3256
return True
3357
```
3458

59+
### 思路 1:复杂度分析
60+
61+
- **时间复杂度**:$O(n),ドル其中 $n$ 为字符串长度。
62+
- **空间复杂度**:$O(|S|)$ ,其中 $S$ 是字符串字符集。
63+

‎Solutions/0242. 有效的字母异位词.md

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,42 @@
55

66
## 题目大意
77

8-
给定两个字符串 s 和 t ,判断 t 和 s 是否使用了相同的字符构成(字符出现的种类和数目都相同)。
8+
**描述**:给定两个字符串 $s$ 和 $t$。
9+
10+
**要求**:判断 $t$ 和 $s$ 是否使用了相同的字符构成(字符出现的种类和数目都相同)。
11+
12+
**说明**:
13+
14+
- **字母异位词**:如果 $s$ 和 $t$ 中每个字符出现的次数都相同,则称 $s$ 和 $t$ 互为字母异位词。
15+
- 1ドル \le s.length, t.length \le 5 \times 10^4$。
16+
- $s$ 和 $t$ 仅包含小写字母。
17+
18+
**示例**:
19+
20+
- 示例 1:
21+
22+
```python
23+
输入: s = "anagram", t = "nagaram"
24+
输出: True
25+
```
26+
27+
- 示例 2:
28+
29+
```python
30+
输入: s = "rat", t = "car"
31+
输出: False
32+
```
933

1034
## 解题思路
1135

12-
1. 先判断字符串 s 和 t 的长度,不一样直接返回 false;
13-
2. 分别遍历字符串 s 和 t。先遍历字符串 s,用哈希表存储字符串 s 中字符出现的频次;
14-
3. 再遍历字符串 t,哈希表中减去对应字符的频次,出现频次 < 0 则输出 false;
15-
4. 如果没出现频次 < 0,则输出 true。
36+
### 思路 1:哈希表
1637

17-
## 代码
38+
1. 先判断字符串 $s$ 和 $t$ 的长度,不一样直接返回 `False`;
39+
2. 分别遍历字符串 $s$ 和 $t$。先遍历字符串 $s,ドル用哈希表存储字符串 $s$ 中字符出现的频次;
40+
3. 再遍历字符串 $t,ドル哈希表中减去对应字符的频次,出现频次小于 0ドル$ 则输出 `False`;
41+
4. 如果没出现频次小于 0ドル,ドル则输出 `True`
42+
43+
### 思路 1:代码
1844

1945
```python
2046
def isAnagram(self, s: str, t: str) -> bool:
@@ -36,3 +62,8 @@ def isAnagram(self, s: str, t: str) -> bool:
3662
return True
3763
```
3864

65+
### 思路 1:复杂度分析
66+
67+
- **时间复杂度**:$O(n + m),ドル其中 $n$、$m$ 分别为字符串 $s$、$t$ 的长度。
68+
- **空间复杂度**:$O(|S|),ドル其中 $S$ 为字符集大小,此处 $S == 26$。
69+

‎Solutions/0268. 丢失的数字.md

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,47 @@
55

66
## 题目大意
77

8-
给定一个长度为 n 的数组 nums,nums 包含 [0, n] 中的 n 个数,要求找出 [0, n] 范围内没有出现在数组中的那个数
8+
**描述**:给定一个包含 $[0, n]$ 中 $n$ 个数的数组 $nums$
99

10-
- n == len(nums)
10+
**要求**:找出 $[0, n]$ 这个范围内没有出现在数组中的那个数。
1111

12+
**说明**:
13+
14+
- $n == nums.length$
1215
- 1ドル \le n \le 10^4$
16+
- 0ドル \le nums[i] \le n$。
17+
- $nums$ 中的所有数字都独一无二。
1318

14-
- 0ドル \le nums[i] \le n$
19+
**示例**:
1520

16-
- nums 中的数字是唯一的
21+
- 示例 1:
1722

18-
23+
```python
24+
输入:nums = [3,0,1]
25+
输出:2
26+
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
27+
```
1928

20-
## 解题思路
29+
- 示例 2:
2130

22-
[0, n] 的范围有 n+1 个数(包含 0)。现在给了我们 n 个数,要求找出其中缺失的那个数。
31+
```python
32+
输入:nums = [0,1]
33+
输出:2
34+
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
35+
```
2336

24-
### 1. 哈希表
37+
##解题思路
2538

26-
将 nums 中所有元素插入到哈希表中,然后遍历 [0, n],找到缺失的数字
39+
$[0, n]$ 的范围有 $n + 1$ 个数(包含 0ドル$)。现在给了我们 $n$ 个数,要求找出其中缺失的那个数
2740

28-
这里的哈希表也可以用长度为 n+1 的数组代替。
41+
### 思路 1:哈希表
2942

30-
### 2. 数学计算
43+
将 $nums$ 中所有元素插入到哈希表中,然后遍历 $[0, n],ドル找到缺失的数字。
3144

32-
已知 [0, n] 的求和公式为:$\sum_{i=0}^n i = \frac{n*(n+1)}{2},ドル则用 [0, n] 的和,减去数组中所有元素的和,就得到了缺失数字
45+
这里的哈希表也可以用长度为 $n + 1$ 的数组代替
3346

34-
##代码
47+
### 思路 1:代码
3548

36-
1. 哈希表
3749
```python
3850
class Solution:
3951
def missingNumber(self, nums: List[int]) -> int:
@@ -44,12 +56,27 @@ class Solution:
4456
return num
4557
```
4658

47-
2. 数学计算
59+
### 思路 1:复杂度分析
60+
61+
- **时间复杂度**:$O(n)$。
62+
- **空间复杂度**:$O(n)$。
63+
64+
### 思路 2:数学计算
65+
66+
已知 $[0, n]$ 的求和公式为:$\sum_{i=0}^n i = \frac{n*(n+1)}{2},ドル则用 $[0, n]$ 的和,减去数组中所有元素的和,就得到了缺失数字。
67+
68+
### 思路 2:代码
69+
4870
```python
4971
class Solution:
5072
def missingNumber(self, nums: List[int]) -> int:
5173
sum_nums = sum(nums)
5274
n = len(nums)
53-
return (n+1)*n//2 - sum_nums
75+
return (n+1) * n //2 - sum_nums
5476
```
5577

78+
### 思路 2:复杂度分析
79+
80+
- **时间复杂度**:$O(n)$。
81+
- **空间复杂度**:$O(1)$。
82+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /