算法学习100天——18 双指针题型分类
花了一个多礼拜,把多线程再学习了一遍
继续回来学算法
刷题是基于github上CS-Notes来的
在此基础上,我用自己的理解将双指针分成了以下三类
-
左右型双指针
两个指针在一个数组左右两边
- 有序数组中找两数和为targethttps://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/description/
- 给定一个整数target,找到两个数的平方和为targethttps://leetcode-cn.com/problems/sum-of-square-numbers/description/
- 反转单词中的元音字母https://leetcode-cn.com/problems/reverse-vowels-of-a-string/description/
- 判断一个字符串是否为回文串,字符串删去一个字符满足的话,也算是,如“abca”
其实就是求(str, i , j) || (str, i + 1 , j) || (str, i , j - 1) https://leetcode-cn.com/problems/valid-palindrome-ii/description/
-
平行型双指针
两个指针在不同的两个数组/链表上
- 归并两个字符串/数组/链表https://leetcode-cn.com/problems/merge-sorted-array/description/
- 找出字符串数组中,最长子序列https://leetcode-cn.com/problems/longest-word-in-dictionary-through-deleting/description/
-
快慢型双指针
两个指针在同一个方向,但是一个移动速度快,一个速度慢
- 判断一个链表是否有环https://leetcode-cn.com/problems/linked-list-cycle/description/