Skip to content

Commit 20dd08a

Browse files
committed
【update】专题-双指针
1 parent 6869776 commit 20dd08a

File tree

2 files changed

+101
-8
lines changed

2 files changed

+101
-8
lines changed

C-算法/专题-B-双指针.md

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ Index
3030
- [最小覆盖子串(Minimum Window Substring)](#最小覆盖子串minimum-window-substring)
3131
- [长度最小的子数组(Minimum Size Subarray Sum)](#长度最小的子数组minimum-size-subarray-sum)
3232
- [其他](#其他)
33-
- [合并两个有序数组](#合并两个有序数组)
33+
- [合并两个有序数组(Merge Sorted Array)](#合并两个有序数组merge-sorted-array)
3434
- [接雨水(Trapping Rain Water)(一维)](#接雨水trapping-rain-water一维)
3535
- [颜色分类(Sort Colors)](#颜色分类sort-colors)
36+
- [两个数组的交集(Intersection of Two Arrays)](#两个数组的交集intersection-of-two-arrays)
3637

3738
<!-- /TOC -->
3839

@@ -587,7 +588,7 @@ class Solution:
587588

588589
# 其他
589590

590-
## 合并两个有序数组
591+
## 合并两个有序数组(Merge Sorted Array)
591592
> LeetCode/[88. 合并两个有序数组](https://leetcode-cn.com/problems/merge-sorted-array/description/)
592593
593594
**问题描述**
@@ -769,4 +770,71 @@ class Solution:
769770
r -= 1
770771
i -= 1 # 注意回退,因为不确定原 A[r] 处是什么
771772
i += 1
773+
```
774+
775+
776+
## 两个数组的交集(Intersection of Two Arrays)
777+
> LeetCode/[349. 两个数组的交集](https://leetcode-cn.com/problems/intersection-of-two-arrays/description/)
778+
779+
**问题描述**
780+
```
781+
给定两个数组,编写一个函数来计算它们的交集。
782+
783+
示例 1:
784+
输入: nums1 = [1,2,2,1], nums2 = [2,2]
785+
输出: [2]
786+
787+
示例 2:
788+
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
789+
输出: [9,4]
790+
791+
说明:
792+
输出结果中的每个元素一定是唯一的。
793+
我们可以不考虑输出结果的顺序。
794+
```
795+
796+
**思路**
797+
- 1)排序 + 二分
798+
- 2)Hash
799+
- 3)排序 + 双指针
800+
801+
**Python**(双指针)
802+
```python
803+
class Solution:
804+
def intersection(self, A, B):
805+
"""
806+
:type A: List[int]
807+
:type B: List[int]
808+
:rtype: List[int]
809+
"""
810+
A.sort()
811+
B.sort()
812+
813+
m = len(A)
814+
n = len(B)
815+
816+
res = []
817+
i, j = 0, 0
818+
while i < m and j < n:
819+
if A[i] < B[j]:
820+
i += 1
821+
elif A[i] > B[j]:
822+
j += 1
823+
else:
824+
if (i > 0 and A[i - 1] == A[i]) or (j > 0 and B[j - 1] == B[j]): # 去重
825+
pass
826+
else:
827+
res.append(A[i])
828+
829+
i += 1
830+
j += 1
831+
832+
# i += 1
833+
# while i < m and A[i - 1] == A[i]:
834+
# i += 1
835+
# j += 1
836+
# while j < n and B[j - 1] == B[j]:
837+
# j += 1
838+
839+
return res
772840
```

ToDo.md

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Updates Log
44
## ToDo
55
- Tensorflow - char embedding layer
66
- Tensorflow - Pointer Layer
7-
- 算法 - 专题-海量数据处理
87
- 机器学习 - 专题-XGBoost
98
- 深度学习 - GAN 与 RL 基本模型
109
- CRF 条件随机场 / 图模型
@@ -21,9 +20,6 @@ Updates Log
2120
- gbdt,xgboost,lgbm的区别
2221
- 模型融合的方法
2322
- 数据可视化分析 - 流形学习
24-
- NLP-句向量
25-
- 任务无关的句向量
26-
> 什么是自注意力机制? https://zhuanlan.zhihu.com/p/42425945
2723
- 算法专题-排列与组合
2824
- 吉布斯采样
2925
- 算法-矩阵乘法
@@ -42,11 +38,39 @@ Updates Log
4238
- 机器学习实战-部分代码(K-Means等)
4339
- 判断相似二叉树及优化
4440
- `max(x, y)` 的期望
45-
- n个[0,n)的数,求每个数的出现次数(不能开辟额外空间)
4641
- 加速网络收敛的方法
4742
- 回归树、基尼指数
48-
- 长短地址转换
4943
- 判断两个链表是否相交(CSDN)
44+
- 一阶 二阶泰勒展开
45+
- 梯度下降往往没有指向
46+
47+
## 2018-9-24
48+
- 算法 - 专题 - 双指针
49+
50+
## 2018-9-23
51+
- 算法 - 专题 - 双指针
52+
53+
## 2018-9-21
54+
- 算法 - 专题 - 双指针
55+
56+
## 2018-9-15
57+
- 笔试 - 爱奇艺
58+
- 笔试 - 搜狐畅游
59+
- NLP - 专题-句向量
60+
61+
## 2018-9-8
62+
- 算法 - 高级数据结构
63+
- 树状数组
64+
- papers
65+
- 视觉问答
66+
67+
## 2018-9-7
68+
- 算法 - 区间问题
69+
- 算法 - 数学
70+
- 最大共线点的个数
71+
72+
## 2018-9-5
73+
- 算法 - 排列组合专题整理
5074

5175
## 2018-9-4
5276
- 算法 - 数据结构 - 设计
@@ -56,6 +80,7 @@ Updates Log
5680
- 上一个排列
5781
- 全排列(无重复)
5882
- 全排列(有重复)
83+
- 算法 - 面试真题 - n个[0,n)的数,求每个数的出现次数(不能开辟额外空间)
5984

6085
## 2018-9-3
6186
- 深度学习基础 - 正则化 - Batch Normalization(修订)

0 commit comments

Comments
 (0)