做题思路:
 1)首先对数组进行排序
 2)创建一个for循环: 第一个元素指向for循环
 3)然后创建一个while循环;第二个元素指向for循环的下一个元素,第三个元素指向最后一个元素
 4)如果三个元素之和=target, 输出结果;如果三个元素之和>target, 第三个元素指针左移动;如果三个元素之和<target, 第二个元素指针右移动
 
题目一:三数之和
 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请
你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
def sumThree():
    nums = [-1,0,1,2,-1,-4]
    nums.sort()
    #[[-1,-1,2],[-1,0,1]]
    res = []
    n = len(nums)
    for i in range(n):
        j = i+1
        k = n-1
        if(nums[i]>0):
            return res
        if(i>0 and nums[i] == nums[i-1]):
            continue
        while(j<k):
            if(nums[i]+nums[j]+nums[k]==0):
                res.append([nums[i], nums[j],nums[k]])
                while(j<k and nums[j] == nums[j+1]):
                    j+=1
                while(j<k and nums[k] == nums[k-1]):
                    k-=1
                j+=1
                k-=1
            elif(nums[i]+nums[j]+nums[k]>0):
                k-=1
            elif(nums[i]+nums[j]+nums[k]<0):
                j+=1
    return  res
题目二:四数之和
 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):
0 <= a, b, c, d < n
 a、b、c 和 d 互不相同
 nums[a] + nums[b] + nums[c] + nums[d] == target
 你可以按 任意顺序 返回答案 。
def sumFore():
    nums = [1,0,-1,0,-2,2]
    target = 0
    res = []
    if not nums or len(nums)<4:
        return res
    nums.sort()
    n = len(nums)
    for i in range(n-3):
        if(i>0 and nums[i] == nums[i-1]):
            continue
        if(nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target):
            break
        if(nums[i]+nums[n-3]+nums[n-2]+nums[n-1]<target):
            continue
        for j in range(i+1, n-2):
            if(j>i+1 and nums[j]==nums[j-1]):
                continue
            if(nums[i]+nums[j]+nums[j+1]+nums[j+2]>target):
                break
            if(nums[i]+nums[j]+nums[n-2]+nums[n-1]<target):
                continue
            k = j+1
            m = n-1
            while(k<m):
                if(nums[i]+nums[j]+nums[k]+nums[m]==target):
                    res.append([nums[i], nums[j], nums[k], nums[m]])
                    while(k<m and nums[k+1] == nums[k]):
                        k+=1
                    k+=1
                    while(k<m and nums[m-1] == nums[m]):
                        m-=1
                    m-=1
                elif(nums[i]+nums[j]+nums[k]+nums[m]>target)   :
                    m-=1
                else:
                    k+=1
    return res



















