Python高效两指针算法实现数组与字符串操作
高效查找排序数组中满足条件的元素对,用两指针技术就挺合适。一个指头从左边走,一个从右边走,两个往中间挪,碰头前看看它们加起来是不是目标值。用在像“找出和为 9 的所有数对”这种场景里,简洁又高效,省了不少事。
两指针技术不光能找数对,像去重、回文判断这类操作,它也能派上用场。比如要删掉排序数组里的重复项,只要一边比一边,碰到重复就跳过,适合应对那种你不想写嵌套循环但又得检查所有元素的情况。
写起来也不复杂,用 Python 几行代码就能搞定。比如下面这个查找目标和的例子:
def find_pairs(nums, target):
left, right = 0, len(nums) - 1
pairs = []
while left < right xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed>
再比如判断字符串是否为回文,你也可以用两个指针从头尾对比字符,一路往中间挪。挺直接,也不会绕。你写算法题时应该经常遇到。
啊,两指针是那种“写法简单但顶”的技巧。用得好能帮你把 O(n²)变成 O(n),效率提升不是一点点。如果你做 LeetCode 或者刷题找手感,强烈建议多练练。
如果你对排序数组还不熟,可以看看这篇相关的排序数组,思路比较清晰。
12.74KB
文件大小:
评论区