# @lc code=start classSolution: deffourSum(self, nums: List[int], target: int) -> List[List[int]]: nums = sorted(nums) length = len(nums) ifnot nums or length<4: return [] res = [] deftwoSum(nums, start, target): low, high = start, len(nums)-1 res = [] while low<high: sumLR = nums[low]+nums[high] left, right = nums[low], nums[high] if sumLR<target: while low<high and nums[low]==left: low+=1 elif sumLR>target: while low<high and nums[high]==right: high-=1 else: res.append([left, right]) while low<high and nums[low]==left: low+=1 while low<high and nums[high]==right: high-=1 return res
for a inrange(len(nums)-3): # a>0 和 b>a+1 为了跳过最初始状况,如 [0,0,0,0] if a>0and nums[a]==nums[a-1]: continue for b inrange(a+1, len(nums)-2): if b>a+1and nums[b]==nums[b-1]: continue subRes = twoSum(nums, b+1, target-nums[a]-nums[b]) for sub in subRes: sub.append(nums[a]) sub.append(nums[b]) res.append(sub) return res # @lc code=end