算法攻关-双指针笔记

2021-03-06 19:42:00 浏览数 (1)

一、题目分类

双指针目前LC上涉及83道题,属于面试的一个高频范围区。我们根据标签分类是可以获取到一部分信息笔试考察范围点的。目前LC上一共是1989道题。概率为83/1989= 4.17%.

公众号-小诚信驿站,算法攻关公众号-小诚信驿站,算法攻关

二、题目举例

  • 链表中是否有环
  • 查找、删除链表倒数第K个节点
  • 最小覆盖子串
  • 两数之和-有序数组
  • 三数之和
  • 最接近的三数之和
  • ....等

三、双指针的思想

双指针的思想可以归纳为:

双指针很奇妙,一快一慢走。

相距K位,可解链表倒数K节点。

相距K位,可解链表是否有环。

相距K位,滑动窗口思想题目跑不了。

持续更新....

四、解题表达式

双指针公式->固定一方,变动另一方,或者双方一起同步

代码语言:javascript复制
right = left   K;
//链表倒数第K个节点类问题
while(right.next != null){
  left= left.next;
  }
  return left;
//链表循环检测问题 right比left快一步
right = left   K ; K =1;
while(left != right){
   if(left ==null || right.next == null){
     return false;
   }
   left = left.next;
   right = right.next.next;
}

滑动窗口公式->固定一方,变动另一方:

代码语言:javascript复制
when(right - left   1 > minWindow){
    //固定左指针,移动右指针
    if(condition1){
        //处理使其满足condition2条件,并不符合condition1条件
        right  ;
    }
    //固定右指针,移动左指针
    if(condition2){
        //处理使其满足condition1条件,并不符合condition2条件
        left  ;
    }
}

0 人点赞