diff --git a/container-with-most-water/jylee2033.py b/container-with-most-water/jylee2033.py new file mode 100644 index 0000000000..e39ec0677d --- /dev/null +++ b/container-with-most-water/jylee2033.py @@ -0,0 +1,19 @@ +class Solution: + def maxArea(self, height: List[int]) -> int: + left = 0 + right = len(height) - 1 + area = min(height[left], height[right]) * (right - left) + + while left < right: + if height[left] < height[right]: + left += 1 + else: + right -= 1 + + new_area = min(height[left], height[right]) * (right - left) + area = max(area, new_area) + + return area + +# Time Complexity: O(n) +# Space Complexity: O(1) diff --git a/valid-parentheses/jylee2033.py b/valid-parentheses/jylee2033.py new file mode 100644 index 0000000000..1cffb25248 --- /dev/null +++ b/valid-parentheses/jylee2033.py @@ -0,0 +1,25 @@ +class Solution: + def isValid(self, s: str) -> bool: + close_to_open = {')': '(', '}': '{', ']': '['} + stack = [] # Open brackets + + if len(s) % 2 == 1: + return False + + for ch in s: + # Open bracket + if ch in close_to_open.values(): + stack.append(ch) + # Close bracket + else: + if len(stack) == 0: + return False + + expected = close_to_open[ch] + if stack.pop() != expected: + return False + + return len(stack) == 0 + +# Time Complexity: O(n) +# Space Complexity: O(n)