From 5f98d05a8e8b518de5bd892390e73dbface52737 Mon Sep 17 00:00:00 2001 From: Yigid BALABAN Date: Wed, 11 Sep 2024 22:19:50 +0300 Subject: [PATCH] wip: 3 pointers 3sum --- medium/3sum.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 medium/3sum.py diff --git a/medium/3sum.py b/medium/3sum.py new file mode 100644 index 0000000..7fd8856 --- /dev/null +++ b/medium/3sum.py @@ -0,0 +1,33 @@ +#!/usr/bin/python +# yigid balaban +# neetcode 2024 +# 3sum + +def solution(nums: list[int]) -> list[list[int]]: + if len(nums) < 3: + return [] + if len(nums) == 3 and sum(nums) == 0: + return [nums] + + nums = sorted(nums) + triples = [] + def comb(what: list[int], head: int): + mtriples = [] + for p0 in range(0, len(what) + 1): + for p1 in range(p0, len(what)): + if p1 != p0 and head + what[p0] + what[p1] == 0: + triple = sorted([head, what[p0], what[p1]]) + if triple not in triples and triple not in mtriples: + mtriples.append(triple) + return mtriples + + for p in range(len(nums) - 3): + triples.extend(comb(nums[p + 1:], nums[p])) + return triples + +print(solution([0,0]) == []) +print(solution([-1,0,1,2,-1,-4]), solution([-1,0,1,2,-1,-4]) == [[-1,-1,2],[-1,0,1]]) +print(solution([0,1,1]) == []) +print(solution([0,0,0]) == [[0,0,0]]) +print(solution([0,0,0,0]) == [[0,0,0]]) +