题目链接:三数之和
分析:写过“两数之和”可以稍作思考,找到a,b,c满足a+b+c=0,就是找到a,b满足a+b=-c,这就是两数之和了,再防止重复的结果。
这里给出相对通用的方案:先对数组进行排序,再前后夹逼求解,时间复杂度O(n^2)
不单单是三数之和,k数之和也可以这样推广,O(max { n*logn, n^(k-1) } )
直接看代码,在注释里解释,所得结果在数组中的下标为 i, j, k
class Solution: def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ target = 0 result = [] # 我们要返回的结果集 L_num = len(nums) if L_num < 3: return result # 长度小于3,直