概念
双指针,顾名思义,就是利用两个指针去遍历数组,一般来说,遍历数组采用的是单指针(index)去遍历,两个指针一般是在有序数组中使用,一个放首,一个放尾,同时向中间遍历,直到两个指针相交,完成遍历,时间复杂度也是O(n)。
使用场景
- 时间复杂度:O(n) 并且 One Pass
- 空间要求:in place
- 两数之和满足某条件
- 先对数组排序,再采用两个指针,分别从前和后往中间遍历,front增大,tail减小,通过对条件的判断,可以在O(n)内遍历,而非使用双重循环。
- in place交换
- 一个指针正常遍历,另一个指针去找可以用来交换的元素。
例题
- 有序数组的 Two Sum
- 两数平方和
- 反转字符串中的元音字符
- 回文字符串
- 归并两个有序数组
- 判断链表是否存在环
- 最长子序列
参考文章:
FROM :blog.cfyqy.com | Author:cfyqy
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论