Skip to content

Commit

Permalink
更新题解列表
Browse files Browse the repository at this point in the history
  • Loading branch information
itcharge committed Jan 15, 2024
1 parent 8ea6473 commit 6596885
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 25 deletions.
2 changes: 1 addition & 1 deletion Solutions/0003. 无重复字符的最长子串.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
**说明**

- $0 \le s.length \le 5 * 10^4$。
- `s` 由英文字母、数字、符号和空格组成。
- $s$ 由英文字母、数字、符号和空格组成。

**示例**

Expand Down
14 changes: 7 additions & 7 deletions Solutions/0082. 删除排序链表中的重复元素 II.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

## 题目大意

**描述**:给定一个已排序的链表的头 `head`
**描述**:给定一个已排序的链表的头 $head$

**要求**:删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。

Expand All @@ -34,12 +34,12 @@

这道题的题意是需要保留所有不同数字,而重复出现的所有数字都要删除。因为给定的链表是升序排列的,所以我们要删除的重复元素在链表中的位置是连续的。所以我们可以对链表进行一次遍历,然后将连续的重复元素从链表中删除即可。具体步骤如下:

- 先使用哑节点 `dummy_head` 构造一个指向 `head` 的指针,使得可以防止从 `head` 开始就是重复元素。
- 然后使用指针 `cur` 表示链表中当前元素,从 `head` 开始遍历。
- 当指针 `cur` 的下一个元素和下下一个元素存在时:
- 如果下一个元素值和下下一个元素值相同,则我们使用指针 `temp` 保存下一个元素,并使用 `temp` 向后遍历,跳过所有重复元素,然后令 `cur` 的下一个元素指向 `temp` 的下一个元素,继续向后遍历。
- 如果下一个元素值和下下一个元素值不同,则令 `cur` 向右移动一位,继续向后遍历。
- 当指针 `cur` 的下一个元素或者下下一个元素不存在时,说明已经遍历完,则返回哑节点 `dummy_head` 的下一个节点作为头节点。
- 先使用哑节点 $dummy\underline{}head$ 构造一个指向 $head$ 的指针,使得可以防止从 $head$ 开始就是重复元素。
- 然后使用指针 $cur$ 表示链表中当前元素,从 $head$ 开始遍历。
- 当指针 $cur$ 的下一个元素和下下一个元素存在时:
- 如果下一个元素值和下下一个元素值相同,则我们使用指针 $temp$ 保存下一个元素,并使用 $temp$ 向后遍历,跳过所有重复元素,然后令 $cur$ 的下一个元素指向 $temp$ 的下一个元素,继续向后遍历。
- 如果下一个元素值和下下一个元素值不同,则令 $cur$ 向右移动一位,继续向后遍历。
- 当指针 $cur$ 的下一个元素或者下下一个元素不存在时,说明已经遍历完,则返回哑节点 $dummy\underline{}head$ 的下一个节点作为头节点。

### 思路 1:代码

Expand Down
8 changes: 4 additions & 4 deletions Solutions/0083. 删除排序链表中的重复元素.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

## 题目大意

**描述**:给定一个已排序的链表的头 `head`
**描述**:给定一个已排序的链表的头 $head$

**要求**:删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。

Expand All @@ -32,11 +32,11 @@

### 思路 1:遍历

- 使用指针 `curr` 遍历链表,先将 `head` 保存到 `curr` 指针。
- 使用指针 $curr$ 遍历链表,先将 $head$ 保存到 $curr$ 指针。
- 判断当前元素的值和当前元素下一个节点元素值是否相等。
- 如果相等,则让当前指针指向当前指针下两个节点。
- 否则,让 `curr` 继续向后遍历。
- 遍历完之后返回头节点 `head`
- 否则,让 $curr$ 继续向后遍历。
- 遍历完之后返回头节点 $head$

### 思路 1:遍历代码

Expand Down
22 changes: 11 additions & 11 deletions Solutions/0139. 单词拆分.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@

## 题目大意

**描述**:给定一个非空字符串 `s` 和一个包含非空单词的列表 `wordDict` 作为字典。
**描述**:给定一个非空字符串 $s$ 和一个包含非空单词的列表 $wordDict$ 作为字典。

**要求**:判断是否可以利用字典中出现的单词拼接出 `s`
**要求**:判断是否可以利用字典中出现的单词拼接出 $s$

**说明**

- 不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
- $1 \le s.length \le 300$。
- $1 \le wordDict.length \le 1000$。
- $1 \le wordDict[i].length \le 20$。
- `s``wordDict[i]` 仅有小写英文字母组成。
- `wordDict` 中的所有字符串互不相同。
- $s$$wordDict[i]$ 仅有小写英文字母组成。
- $wordDict$ 中的所有字符串互不相同。

**示例**

Expand Down Expand Up @@ -51,25 +51,25 @@

###### 2. 定义状态

`s` 能否拆分为单词表的单词,可以分解为:
$s$ 能否拆分为单词表的单词,可以分解为:

- 前 $i$ 个字符构成的字符串,能否分解为单词。
- 剩余字符串,能否分解为单词。

定义状态 `dp[i]` 表示:长度为 $i$ 的字符串 `s[0: i]` 能否拆分成单词,如果为 `True` 则表示可以拆分,如果为 `False` 则表示不能拆分。
定义状态 $dp[i]$ 表示:长度为 $i$ 的字符串 $s[0: i]$ 能否拆分成单词,如果为 $True$ 则表示可以拆分,如果为 $False$ 则表示不能拆分。

###### 3. 状态转移方程

- 如果 `s[0: j]` 可以拆分为单词(即 `dp[j] == True`),并且字符串 `s[j: i]` 出现在字典中,则 `dp[i] = True`
- 如果 `s[0: j]` 不可以拆分为单词(即 `dp[j] == False`),或者字符串 `s[j: i]` 没有出现在字典中,则 `dp[i] = False`
- 如果 $s[0: j]$ 可以拆分为单词(即 $dp[j] == True$),并且字符串 $s[j: i]$ 出现在字典中,则 `dp[i] = True`
- 如果 $s[0: j]$ 不可以拆分为单词(即 $dp[j] == False$),或者字符串 $s[j: i]$ 没有出现在字典中,则 `dp[i] = False`

###### 4. 初始条件

- 长度为 $0$ 的字符串 `s[0: i]` 可以拆分为单词,即 `dp[0] = True`
- 长度为 $0$ 的字符串 $s[0: i]$ 可以拆分为单词,即 $dp[0] = True$

###### 5. 最终结果

根据我们之前定义的状态,`dp[i]` 表示:长度为 $i$ 的字符串 `s[0: i]` 能否拆分成单词。则最终结果为 `dp[size]``size` 为字符串长度。
根据我们之前定义的状态,$dp[i]$ 表示:长度为 $i$ 的字符串 $s[0: i]$ 能否拆分成单词。则最终结果为 $dp[size]$,$size$ 为字符串长度。

### 思路 1:代码

Expand All @@ -88,6 +88,6 @@ class Solution:

### 思路 1:复杂度分析

- **时间复杂度**:$O(n^2)$,其中 $n$ 为字符串 `s` 的长度。
- **时间复杂度**:$O(n^2)$,其中 $n$ 为字符串 $s$ 的长度。
- **空间复杂度**:$O(n)$。

4 changes: 2 additions & 2 deletions Solutions/0143. 重排链表.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

## 题目大意

**描述**:给定一个单链表 `L` 的头节点 `head`,单链表 `L` 表示为:$L_0$ -> $L_1$ -> $L_2$ -> ... -> $L_{n-1}$ -> $L_n$。
**描述**:给定一个单链表 $L$ 的头节点 $head$,单链表 $L$ 表示为:$L_0 \rightarrow L_1 \rightarrow L_2 \rightarrow ... \rightarrow L_{n-1} \rightarrow L_n$。

**要求**:将单链表 `L` 重新排列为:$L_0$ -> $L_n$ -> $L_1$ -> $L_{n-1}$ -> $L_2$ -> $L_{n-2}$ -> $L_3$ -> $L_{n-3}$ -> ...。
**要求**:将单链表 $L$ 重新排列为:$L_0 \rightarrow L_n \rightarrow L_1 \rightarrow L_{n-1} \rightarrow L_2 \rightarrow L_{n-2} \rightarrow L_3 \rightarrow L_{n-3} \rightarrow ...$

**说明**

Expand Down

0 comments on commit 6596885

Please sign in to comment.