双指针(Two Pointers)是一种常用的数组、链表遍历技巧,利用两个指针在序列上移动,解决区间、子串、去重等问题。
常见应用场景
- 有序数组的两数之和/三数之和
- 快慢指针判断链表有环
- 滑动窗口求子数组/子串问题
- 原地去重、反转、合并等
典型算法1:有序数组的两数之和
给定有序数组 nums 和目标值 target,返回两个数的下标使其和为 target。
代码示例(Python):
def twoSum(nums, target):
left, right = 0, len(nums) - 1
while left < right:
s = nums[left] + nums[right]
if s == target:
return [left, right]
elif s < target:
left += 1
else:
right -= 1
大约 3 分钟