commit 6b2e6effe577f6ba4b9c4f7c44934ff0a92532da Author: ayxan Date: Fri Aug 19 00:15:58 2022 +0400 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b694934 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.venv \ No newline at end of file diff --git a/accepted/__init__.py b/accepted/__init__.py new file mode 100644 index 0000000..151aa94 --- /dev/null +++ b/accepted/__init__.py @@ -0,0 +1,3 @@ +from .accepted_easy import AcceptedEasy +from .accepted_medium import AcceptedMedium +from .accepted_hard import AcceptedHard \ No newline at end of file diff --git a/accepted/accepted_easy.py b/accepted/accepted_easy.py new file mode 100644 index 0000000..c107d5b --- /dev/null +++ b/accepted/accepted_easy.py @@ -0,0 +1,53 @@ +from typing import List + + +class AcceptedEasy: + def roman_to_int(self, s: str) -> int: + """ + Link: https://leetcode.com/problems/roman-to-integer/ + Runtime: 103 ms + """ + roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} + n = len(s) + num = roman_map[s[n - 1]] + for i in range(n - 2, -1, -1): + if roman_map[s[i]] >= roman_map[s[i + 1]]: + num += roman_map[s[i]] + else: + num -= roman_map[s[i]] + return num + + def length_of_last_word(self, s: str) -> int: # sourcery skip: use-next + """ + Link: https://leetcode.com/problems/length-of-last-word/ + Runtime: 54 ms + """ + strIndex = -1 + for i in range(len(s)-1, -1, -1): + if s[i] != ' ': + strIndex = i + break + + spaceIndex = -1 + for i in range(strIndex, -1, -1): + if s[i] == ' ': + spaceIndex = i + break + return strIndex - spaceIndex + + def plus_one(self, digits: List[int]) -> List[int]: + # sourcery skip: inline-immediately-returned-variable, list-comprehension + """ + Link: https://leetcode.com/problems/plus-one/ + Runtime: 34 ms + """ + number = 0 + for i in digits: + number = (number + i) * 10 + number = number // 10 + 1 + + number_list = [] + for i in str(number): + number_list.append(int(i)) + + return number_list \ No newline at end of file diff --git a/accepted/accepted_hard.py b/accepted/accepted_hard.py new file mode 100644 index 0000000..8ae6312 --- /dev/null +++ b/accepted/accepted_hard.py @@ -0,0 +1 @@ +class AcceptedHard: ... \ No newline at end of file diff --git a/accepted/accepted_medium.py b/accepted/accepted_medium.py new file mode 100644 index 0000000..4af5959 --- /dev/null +++ b/accepted/accepted_medium.py @@ -0,0 +1,42 @@ +from typing import List + + +class AcceptedMedium: + def reverse_int(self, x: int) -> int: + """ + Link: https://leetcode.com/problems/reverse-integer/ + Runtime: 36 ms + """ + ctr = 1 + if x < 0: + ctr = -1 + x *= -1 + + nr = 0 + while x > 0: + nr = (nr + (x % 10)) * 10 + x //= 10 + nr //= 10 + + return nr * ctr if -2147483648 <= nr <= 2147483647 else 0 + + def letter_combinations(self, digits: str) -> List[str]: + """ + Link: https://leetcode.com/problems/letter-combinations-of-a-phone-number/ + Runtime: 39 ms + """ + # sourcery skip: use-itertools-product + number_to_string = {'2': ['a', 'b', 'c'], '3': ['d', 'e', 'f'], '4': ['g', 'h', 'i'], + '5': ['j', 'k', 'l'], '6': ['m', 'n', 'o'], '7': ['p', 'q', 'r', 's'], + '8': ['t', 'u', 'v'], '9': ['w', 'x', 'y', 'z']} + + l = [''] + l2 = [] + + for n in digits: + for s in number_to_string[n]: + for i in l: + l2.append(i+s) + l = l2.copy() + l2 = [] + return [] if l[0] == '' else l \ No newline at end of file diff --git a/accepted_refused.py b/accepted_refused.py new file mode 100644 index 0000000..e7809d6 --- /dev/null +++ b/accepted_refused.py @@ -0,0 +1,11 @@ +from .accepted import (AcceptedEasy, + AcceptedMedium, + AcceptedHard) +from .refused import (RefusedEasy, + RefusedMedium, + RefusedHard) + + +class LeetCodeRefused(RefusedEasy, RefusedMedium, RefusedHard): ... + +class LeetCodeAccepted(AcceptedEasy, AcceptedMedium, AcceptedHard): ... \ No newline at end of file diff --git a/refused/__init__.py b/refused/__init__.py new file mode 100644 index 0000000..4de44ac --- /dev/null +++ b/refused/__init__.py @@ -0,0 +1,3 @@ +from .refused_easy import RefusedEasy +from .refused_medium import RefusedMedium +from .refused_hard import RefusedHard \ No newline at end of file diff --git a/refused/refused_easy.py b/refused/refused_easy.py new file mode 100644 index 0000000..eee896f --- /dev/null +++ b/refused/refused_easy.py @@ -0,0 +1 @@ +class RefusedEasy: ... \ No newline at end of file diff --git a/refused/refused_hard.py b/refused/refused_hard.py new file mode 100644 index 0000000..047d70d --- /dev/null +++ b/refused/refused_hard.py @@ -0,0 +1 @@ +class RefusedHard: ... \ No newline at end of file diff --git a/refused/refused_medium.py b/refused/refused_medium.py new file mode 100644 index 0000000..672fedf --- /dev/null +++ b/refused/refused_medium.py @@ -0,0 +1 @@ +class RefusedMedium: ... \ No newline at end of file diff --git a/solution.ipynb b/solution.ipynb new file mode 100644 index 0000000..e69de29