Open leeway00 opened 2 years ago
This is slower
def threeSum(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
if n<3:
return []
nums = sorted(nums)
twosum = defaultdict(int)
for i, j in combinations([*range(len(nums)-1)], 2):
if (nums[i], nums[j]) not in twosum:
twosum[(nums[i],nums[j])] = j
reverted = defaultdict(int)
for ind, val in enumerate(nums):
reverted[val] = max(ind, reverted[val])
ans = []
for val, ind in twosum.items():
if reverted[-sum(val)] > ind:
ans.append([val[0], val[1], -sum(val)])
return ans