diff --git a/3sum/paran22.py b/3sum/paran22.py new file mode 100644 index 000000000..46c2afc08 --- /dev/null +++ b/3sum/paran22.py @@ -0,0 +1,24 @@ +class Solution: + # time complexity: O(n^2) + def threeSum(self, nums: List[int]) -> List[List[int]]: + nums.sort() + answer = set() + + for i in range(len(nums) - 2): + if i > 0 and nums[i] == nums[i - 1]: + continue + + left, right = i + 1, len(nums) - 1 + while left < right: + sum = nums[i] + nums[left] + nums[right] + if sum == 0: + answer.add((nums[i], nums[left], nums[right])) + left += 1 + right -= 1 + elif sum > 0: + right -= 1 + elif sum < 0: + left += 1 + + return [list(x) for x in answer] + diff --git a/climbing-stairs/paran22.py b/climbing-stairs/paran22.py new file mode 100644 index 000000000..760c39966 --- /dev/null +++ b/climbing-stairs/paran22.py @@ -0,0 +1,11 @@ +class Solution: + # time complexity: O(n) + def climbStairs(self, n: int) -> int: + if n <= 2: + return n + + prev1, prev2 = 1, 2 + for _ in range(3, n + 1): + current = prev1 + prev2 + prev1, prev2 = prev2, current + return prev2 diff --git a/product-of-array-except-self/paran22.py b/product-of-array-except-self/paran22.py new file mode 100644 index 000000000..56e6eef88 --- /dev/null +++ b/product-of-array-except-self/paran22.py @@ -0,0 +1,18 @@ +class Solution: + # time complexity: O(n) + def productExceptSelf(self, nums: List[int]) -> List[int]: + n = len(nums) + answer = [1] * n + + prefix = 1 + for i in range(n): + answer[i] = prefix + prefix *= nums[i] + + suffix = 1 + for i in range(n-1, -1, -1): + answer[i] *= suffix + suffix *= nums[i] + + return answer + diff --git a/valid-anagram/paran22.py b/valid-anagram/paran22.py new file mode 100644 index 000000000..46c71857f --- /dev/null +++ b/valid-anagram/paran22.py @@ -0,0 +1,7 @@ +from collections import Counter + +class Solution: + # time complexity: O(n) + def isAnagram(self, s: str, t: str) -> bool: + return Counter(s) == Counter(t) +