思路同,【算法题】给定一个排序数字数组和一个目标 K,在数组中找到和为 K 的2个数的坐标。
依次遍历数组数据,在之后的子数组中查找和为 ( - 当前值)的2个数, 这样3个数的和就是 0 了。

代码:
若输入是无序列表, 可以先进行排序。
In [1]: def find_triplets_sum_to_zero(array):
...: def find_pairs_of_target_sum(arr, tar):
...: left, right = 0, len(arr)-1
...: ret = []
...: while left < right:
...: cur_sum = arr[left] + arr[right]
...: if cur_sum == tar:
...: ret.append([-tar, arr[left], arr[right]])
...: left +=1
...: right -= 1
...: elif cur_sum < tar:
...: left += 1
...: else:
...:

该博客介绍了一个算法问题,即在已排序的数组中找到和为目标值K的三个数的坐标。通过遍历数组,对每个元素使用双指针法在剩余部分寻找和为-K的两个数,从而找到所有可能的三元组。示例代码展示了具体实现,并给出了一个测试用例。
最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



