Skip to content

Commit 2b7d7f5

Browse files
committed
[main] Added leetcode problem
1 parent f42928d commit 2b7d7f5

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed

pythonProblems/leetcode/3sum.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def threeSum(self, nums: List[int]) -> List[List[int]]:
6+
nums = sorted(nums)
7+
triplets = []
8+
num_len = len(nums)
9+
for i, a in enumerate(nums):
10+
if i > 0 and a == nums[i - 1]:
11+
continue
12+
b = i + 1
13+
c = num_len - 1
14+
while b < c:
15+
the_sum = a + nums[b] + nums[c]
16+
if the_sum > 0:
17+
c -= 1
18+
elif the_sum < 0:
19+
b += 1
20+
else:
21+
triplets.append([a, nums[b], nums[c]])
22+
b += 1
23+
while nums[b] == nums[b - 1] and b < c:
24+
b += 1
25+
return triplets
26+
27+
28+
if __name__ == '__main__':
29+
sol = Solution()
30+
print(sol.threeSum([-1, 0, 1, 2, -1, -4]
31+
))
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from typing import List
2+
import itertools
3+
4+
combos = {
5+
2: ["a", "b", "c"],
6+
3: ["d", "e", "f"],
7+
4: ["g", "h", "i"],
8+
5: ["j", "k", "l"],
9+
6: ["m", "n", "o"],
10+
7: ["p", "q", "r", "s"],
11+
8: ["t", "u", "v"],
12+
9: ["w", "x", "y", "z"]
13+
}
14+
15+
16+
def generate_perms(k, arr):
17+
if k == 1:
18+
print(arr)
19+
return arr
20+
else:
21+
generate_perms(k - 1, arr)
22+
23+
for i in range(k):
24+
generate_perms(k - 1, arr)
25+
26+
if k % 2 != 0:
27+
arr[0], arr[k - 1] = arr[k - 1], arr[0]
28+
else:
29+
arr[i], arr[k - 1] = arr[k - 1], arr[i]
30+
31+
32+
class Solution:
33+
def letterCombinations(self, digits: str) -> List[str]:
34+
representations = ["0", "1", "abc", "def",
35+
"ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
36+
queue = []
37+
if len(digits) == 0:
38+
return queue
39+
queue.append("")
40+
41+
for i in range(len(digits)):
42+
ind = int(digits[i])
43+
while len(queue[0]) == i:
44+
permutation = queue[0]
45+
del queue[0]
46+
for eachchar in representations[ind]:
47+
queue.append(permutation + eachchar)
48+
return queue
49+
50+
51+
if __name__ == '__main__':
52+
sol = Solution()
53+
print(sol.letterCombinations("23"))
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def threeSumClosest(self, nums: List[int], target: int) -> int:
6+
nums.sort()
7+
closest_num = nums[0] + nums[1] + nums[2]
8+
for i in range(num_len - 2):
9+
l_ = i + 1
10+
r_ = num_len - 1
11+
while l_ < r_:
12+
res = nums[i] + nums[l_] + nums[r_]
13+
if res == target:
14+
return res
15+
16+
if abs(target - res) < abs(closest_num - target):
17+
closest_num = res
18+
19+
if res > target:
20+
r_ -= 1
21+
else:
22+
l_ += 1
23+
return closest_num
24+
25+
26+
if __name__ == '__main__':
27+
sol = Solution()
28+
print(sol.threeSumClosest([0, 1, 2],
29+
3
30+
))

0 commit comments

Comments
 (0)