思路同,【算法题】给定一个排序数字数组和一个目标 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