From 9f67102b2f201cc662aa95fa2c9f9387df3c3127 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Sat, 20 Dec 2025 09:49:54 +0900 Subject: [PATCH 1/2] Week 6: Valid Parentheses --- valid-parentheses/mandel-17.py | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 valid-parentheses/mandel-17.py diff --git a/valid-parentheses/mandel-17.py b/valid-parentheses/mandel-17.py new file mode 100644 index 0000000000..c136244df8 --- /dev/null +++ b/valid-parentheses/mandel-17.py @@ -0,0 +1,44 @@ +class ArrayStack: + def __init__(self, capacity): + self.capacity = capacity + self.array = [None] * self.capacity + self.top = -1 + + def isEmpty(self): + return self.top == -1 + + def isFull(self): + return self.top == self.capacity - 1 + + def push(self, item): + if not self.isFull(): + self.top += 1 + self.array[self.top] = item + else: + pass + + def pop(self): + if not self.isEmpty(): + self.top -= 1 + return self.array[self.top+1] + else: + pass + +class Solution: + def isValid(self, s: str) -> bool: + stack = ArrayStack(100) + for ch in s: + if ch in ('(', '[', '{'): + stack.push(ch) + elif ch in (')', ']', '}'): + if stack.isEmpty(): + return False + else: + left = stack.pop() + if (ch == ')' and left != '(') or \ + (ch == ']' and left != '[') or \ + (ch == '}' and left != '{'): + return False + return stack.isEmpty() + + From 455955ec8439a513ea0d13c0410fd93168eae3e6 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Sat, 20 Dec 2025 15:26:17 +0900 Subject: [PATCH 2/2] Week 6: Container-with-most-water --- container-with-most-water/mandel-17.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 container-with-most-water/mandel-17.py diff --git a/container-with-most-water/mandel-17.py b/container-with-most-water/mandel-17.py new file mode 100644 index 0000000000..8a3643134c --- /dev/null +++ b/container-with-most-water/mandel-17.py @@ -0,0 +1,13 @@ +class Solution: + def maxArea(self, height: List[int]) -> int: + max_area = 0 + left, right = 0, len(height) - 1 + while left < right: + area = (right - left) * min(height[left], height[right]) + max_area = max(area, max_area) + if height[left] <= height[right]: + left += 1 + else: + right -= 1 + return max_area +