""" 四数之和 """ from typing import List class Solution: def fourSum(self, nums: List[int], target: int) -> List[List[int]]: """ 四数之和 转化为三数之和,理清楚第一个数和第二个之间的关系 :param nums: :param target: :return: """ nums.sort() res = [] n = len(nums) for i in range(n - 3): if i > 0 and nums[i] == nums[i - 1]: continue for j in range(i + 1, n - 2): if j > i + 1 and nums[j] == nums[j - 1]: continue left, right = j + 1, n - 1 while left < right: s = nums[i] + nums[j] + nums[left] + nums[right] if s == target: res.append([nums[i], nums[j], 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 s > target: right -= 1 else: left += 1 return res if __name__ == '__main__': result = Solution().fourSum([1, 0, -1, 0, -2, 2], 0) print(result)