mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 21:10:58 +08:00
更新 双指针总结 排版格式修复
This commit is contained in:
@ -8,7 +8,8 @@
|
||||
|
||||
相信大家已经对双指针法很熟悉了,但是双指针法并不隶属于某一种数据结构,我们在讲解数组,链表,字符串都用到了双指针法,所有有必要针对双指针法做一个总结。
|
||||
|
||||
# 数组篇
|
||||
# 双指针总结篇
|
||||
## 数组篇
|
||||
|
||||
在[数组:就移除个元素很难么?](https://programmercarl.com/0027.移除元素.html)中,原地移除数组上的元素,我们说到了数组上的元素,不能真正的删除,只能覆盖。
|
||||
|
||||
@ -26,7 +27,7 @@ for (int i = 0; i < array.size(); i++) {
|
||||
|
||||
所以此时使用双指针法才展现出效率的优势:**通过两个指针在一个for循环下完成两个for循环的工作。**
|
||||
|
||||
# 字符串篇
|
||||
## 字符串篇
|
||||
|
||||
在[字符串:这道题目,使用库函数一行代码搞定](https://programmercarl.com/0344.反转字符串.html)中讲解了反转字符串,注意这里强调要原地反转,要不然就失去了题目的意义。
|
||||
|
||||
@ -48,7 +49,7 @@ for (int i = 0; i < array.size(); i++) {
|
||||
|
||||
**主要还是大家用erase用的比较随意,一定要注意for循环下用erase的情况,一般可以用双指针写效率更高!**
|
||||
|
||||
# 链表篇
|
||||
## 链表篇
|
||||
|
||||
翻转链表是现场面试,白纸写代码的好题,考察了候选者对链表以及指针的熟悉程度,而且代码也不长,适合在白纸上写。
|
||||
|
||||
@ -62,7 +63,7 @@ for (int i = 0; i < array.size(); i++) {
|
||||
|
||||
那么找到环的入口,其实需要点简单的数学推理,我在文章中把找环的入口清清楚楚的推理的一遍,如果对找环入口不够清楚的同学建议自己看一看[链表:环找到了,那入口呢?](https://programmercarl.com/0142.环形链表II.html)。
|
||||
|
||||
# N数之和篇
|
||||
## N数之和篇
|
||||
|
||||
在[哈希表:解决了两数之和,那么能解决三数之和么?](https://programmercarl.com/0015.三数之和.html)中,讲到使用哈希法可以解决1.两数之和的问题
|
||||
|
||||
@ -87,7 +88,7 @@ for (int i = 0; i < array.size(); i++) {
|
||||
同样的道理,五数之和,n数之和都是在这个基础上累加。
|
||||
|
||||
|
||||
# 总结
|
||||
## 总结
|
||||
|
||||
本文中一共介绍了leetcode上九道使用双指针解决问题的经典题目,除了链表一些题目一定要使用双指针,其他题目都是使用双指针来提高效率,一般是将O(n^2)的时间复杂度,降为$O(n)$。
|
||||
|
||||
|
Reference in New Issue
Block a user