📅  最后修改于: 2023-12-03 14:50:46.303000             🧑  作者: Mango
给定一个包含 n 个整数的数组 arr,计算不同的三元组 (i, j, k),使得 arr [i] + arr [j] + arr [k] 为给定的目标和。
def find_triplets(arr: List[int], target_sum: int) -> List[Tuple[int, int, int]]:
pass
一个列表,其中包含不同三元组的所有可能组合。每种组合用元组 (i, j, k) 表示,元组中 i < j < k。
输入:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target_sum = 15
输出:
[(0, 2, 3), (0, 1, 3), (0, 1, 2), (1, 2, 3)]
这是一个经典的问题,可以通过固定一个数,然后在其右边的子数组中使用双指针求解。为了避免重复,需要跳过相邻的相同数字。
算法步骤如下:
时间复杂度为 O(n^2),空间复杂度为 O(1)。