以下是一种解决方法,使用了双指针的思路来寻找和为目标值的三元组。
def threeSum(nums, target):
nums.sort() # 首先对数组进行排序
result = [] # 存储结果的列表
for i in range(len(nums)-2):
# 跳过重复的元素
if i > 0 and nums[i] == nums[i-1]:
continue
# 使用双指针来寻找剩余两个元素
left = i + 1
right = len(nums) - 1
while left < right:
curr_sum = nums[i] + nums[left] + nums[right]
if curr_sum == target:
result.append([nums[i], nums[left], nums[right]])
# 跳过重复的元素
while left < right and nums[left] == nums[left+1]:
left += 1
while left < right and nums[right] == nums[right-1]:
right -= 1
left += 1
right -= 1
elif curr_sum < target:
left += 1
else:
right -= 1
return result
这个算法的时间复杂度为O(n^2),其中n是数组的长度。