Skip to content

Commit f6f5c61

Browse files
committed
Update 01.Array-Two-Pointers.md
1 parent 48980b2 commit f6f5c61

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ return 没找到 或 对应值
4040

4141
下面我们根据具体例子来讲解如何使用对撞指针来解决问题。
4242

43-
### 2.4 [两数之和 II - 输入有序数组](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/)
43+
### 2.4 两数之和 II - 输入有序数组
4444

45-
#### 2.4.1 题目大意
45+
#### 2.4.1 题目链接
46+
47+
- [167. 两数之和 II - 输入有序数组 - 力扣(LeetCode)](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/)
48+
49+
#### 2.4.2 题目大意
4650

4751
给定一个升序排列的整数数组:`numbers` 和一个目标值 `target`
4852

@@ -77,7 +81,7 @@ class Solution:
7781
- 直到 `left``right` 移动到相同位置停止检测。
7882
- 如果最终仍没找到,则返回 `[-1, -1]`
7983

80-
#### 2.4.3 代码
84+
#### 2.4.4 代码
8185

8286
```Python
8387
class Solution:
@@ -95,17 +99,21 @@ class Solution:
9599
return [-1, -1]
96100
```
97101

98-
### 2.5 [验证回文串](https://leetcode-cn.com/problems/valid-palindrome/)
102+
### 2.5 验证回文串
103+
104+
#### 2.5.1 题目链接
99105

100-
#### 2.5.1 题目大意
106+
- [125. 验证回文串 - 力扣(LeetCode)](https://leetcode-cn.com/problems/valid-palindrome/)
107+
108+
#### 2.5.2 题目大意
101109

102110
给定一个字符串 `s`
103111

104112
要求:判断是否为回文串(只考虑字符串中的字母和数字字符,并且忽略字母的大小写)。
105113

106114
- 回文串:正着读和反着读都一样的字符串。
107115

108-
#### 2.5.2 解题思路
116+
#### 2.5.3 解题思路
109117

110118
使用对撞指针求解。具体步骤如下:
111119

@@ -116,7 +124,7 @@ class Solution:
116124
- 如果不相等,则说明不是回文串,直接返回 `False`
117125
- 如果遇到 `left == right`,跳出循环,则说明该字符串是回文串,返回 `True`
118126

119-
#### 代码
127+
#### 2.5.4 代码
120128

121129
```Python
122130
class Solution:
@@ -140,9 +148,13 @@ class Solution:
140148
return True
141149
```
142150

143-
### 2.6 [盛最多水的容器](https://leetcode-cn.com/problems/container-with-most-water/)
151+
### 2.6 盛最多水的容器
152+
153+
#### 2.6.1 题目链接
144154

145-
#### 2.6.1 题目大意
155+
- [11. 盛最多水的容器 - 力扣(LeetCode)](https://leetcode-cn.com/problems/container-with-most-water/)
156+
157+
#### 2.6.2 题目大意
146158

147159
给定 `n` 个非负整数 $a_1,a_2, ...,a_n$,每个数代表坐标中的一个点 $(i, a_i)$。在坐标内画 `n` 条垂直线,垂直线 `i` 的两个端点分别为 $(i, a_i)$ 和 $(i, 0)$。
148160

@@ -156,7 +168,7 @@ class Solution:
156168
- 输出:`49`
157169
- 解释:图中垂直线代表输入数组 `[1,8,6,2,5,4,8,3,7]`。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 `49`
158170

159-
#### 2.6.2 解题思路
171+
#### 2.6.3 解题思路
160172

161173
从示例中可以看出,如果确定好左右两端的直线,容纳的水量是由 `左右两端直线中较低直线的高度 * 两端直线之间的距离 ` 所决定的。所以我们应该使得 **较低直线的高度尽可能的高**,这样才能使盛水面积尽可能的大。
162174

@@ -169,7 +181,7 @@ class Solution:
169181
- 如果 `right` 指向的直线高度比较低,则将 `right` 指针左移。
170182
- 如果遇到 `left == right`,跳出循环,最后返回最大的面积。
171183

172-
#### 2.6.3 代码
184+
#### 2.6.4 代码
173185

174186
```Python
175187
class Solution:
@@ -215,17 +227,21 @@ return 合适的值
215227

216228
下面我们根据具体例子来讲解如何使用快慢指针来解决问题。
217229

218-
### 3.4 [删除有序数组中的重复项](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/)
230+
### 3.4 删除有序数组中的重复项
231+
232+
#### 3.4.1 题目链接
233+
234+
- [26. 删除有序数组中的重复项 - 力扣(LeetCode)](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/)
219235

220-
#### 3.4.1 题目大意
236+
#### 3.4.2 题目大意
221237

222238
给定一个有序数组 `nums`
223239

224240
要求:删除数组 `nums` 中的重复元素,使每个元素只出现一次。并输出去除重复元素之后数组的长度。
225241

226242
注意:不能使用额外的数组空间,在原地修改数组,并在使用 $O(1)$ 额外空间的条件下完成。
227243

228-
#### 3.4.2 解题思路
244+
#### 3.4.3 解题思路
229245

230246
因为数组是有序的,那么重复的元素一定会相邻。
231247

@@ -240,7 +256,7 @@ return 合适的值
240256
- 重复上述 3 ~ 4 步,直到 `fast` 等于数组长度。
241257
- 返回 `slow + 1` 即为新数组长度。
242258

243-
#### 3.4.3 代码
259+
#### 3.4.4 代码
244260

245261
```Python
246262
class Solution:
@@ -291,15 +307,19 @@ while left_1 < len(nums1) and left_2 < len(nums2):
291307

292308
分离双指针一般用于处理有序数组合并,求交集、并集问题。下面我们根据具体例子来讲解如何使用分离双指针来解决问题。
293309

294-
### 4.4 [两个数组的交集](https://leetcode-cn.com/problems/intersection-of-two-arrays/)
310+
### 4.4 两个数组的交集
311+
312+
#### 4.4.1 题目链接
313+
314+
- [349. 两个数组的交集 - 力扣(LeetCode)](https://leetcode-cn.com/problems/intersection-of-two-arrays/)
295315

296-
#### 4.4.1 题目大意
316+
#### 4.4.2 题目大意
297317

298318
给定两个数组 `nums1``nums2`
299319

300320
要求:编写一个函数来计算它们的交集。重复元素只计算一次。
301321

302-
#### 4.4.2 解题思路
322+
#### 4.4.3 解题思路
303323

304324
使用分离双指针求解,具体步骤如下:
305325

@@ -310,7 +330,7 @@ while left_1 < len(nums1) and left_2 < len(nums2):
310330
- 如果 `nums1[left_1]` 大于 `nums2[left_2]`,则将 `left_2` 右移。
311331
- 最后输出答案数组。
312332

313-
#### 4.4.3 代码
333+
#### 4.4.4 代码
314334

315335
```Python
316336
class Solution:

0 commit comments

Comments
 (0)