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

[pull] main from itcharge:main #171

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
jenningsloy318 merged 2 commits into AlgorithmAndLeetCode:main from itcharge:main
Jan 15, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
更新题解列表
  • Loading branch information
itcharge committed Jan 15, 2024
commit 6596885f1e59070540f10e4748bd4a8f0a50b37c
2 changes: 1 addition & 1 deletion Solutions/0003. 无重复字符的最长子串.md
View file Open in desktop
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
View file Open in desktop
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
View file Open in desktop
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
View file Open in desktop
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
View file Open in desktop
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

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