双指针(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 分钟