From a371a2ee9ce6316a322b8bd331072295890a87c2 Mon Sep 17 00:00:00 2001 From: printjin Date: Mon, 30 Jun 2025 10:29:42 +0900 Subject: [PATCH 1/3] Solve : Counting Bits --- counting-bits/printjin-gmailcom.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 counting-bits/printjin-gmailcom.py diff --git a/counting-bits/printjin-gmailcom.py b/counting-bits/printjin-gmailcom.py new file mode 100644 index 000000000..c34a736df --- /dev/null +++ b/counting-bits/printjin-gmailcom.py @@ -0,0 +1,6 @@ +class Solution: + def countBits(self, n): + ans = [0] * (n + 1) + for i in range(1, n + 1): + ans[i] = ans[i >> 1] + (i & 1) + return ans From 8aa3e1cc613247cfbaa5a46a323e519b7a055478 Mon Sep 17 00:00:00 2001 From: printjin Date: Mon, 30 Jun 2025 14:52:42 +0900 Subject: [PATCH 2/3] Solve : meeting rooms ii --- .../printjin-gmailcom.py | 13 +++++++++++++ house-robber-ii/printjin-gmailcom.py | 10 ++++++++++ meeting-rooms-ii/printjin-gmailcom.py | 14 ++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 binary-tree-level-order-traversal/printjin-gmailcom.py create mode 100644 house-robber-ii/printjin-gmailcom.py create mode 100644 meeting-rooms-ii/printjin-gmailcom.py diff --git a/binary-tree-level-order-traversal/printjin-gmailcom.py b/binary-tree-level-order-traversal/printjin-gmailcom.py new file mode 100644 index 000000000..0b16125a6 --- /dev/null +++ b/binary-tree-level-order-traversal/printjin-gmailcom.py @@ -0,0 +1,13 @@ +class Solution: + def levelOrder(self, root): + result = [] + def dfs(node, level): + if not node: + return + if len(result) == level: + result.append([]) + result[level].append(node.val) + dfs(node.left, level + 1) + dfs(node.right, level + 1) + dfs(root, 0) + return result diff --git a/house-robber-ii/printjin-gmailcom.py b/house-robber-ii/printjin-gmailcom.py new file mode 100644 index 000000000..c9d617870 --- /dev/null +++ b/house-robber-ii/printjin-gmailcom.py @@ -0,0 +1,10 @@ +class Solution: + def rob(self, nums): + if len(nums) == 1: + return nums[0] + def rob_linear(houses): + prev = curr = 0 + for num in houses: + prev, curr = curr, max(curr, prev + num) + return curr + return max(rob_linear(nums[:-1]), rob_linear(nums[1:])) diff --git a/meeting-rooms-ii/printjin-gmailcom.py b/meeting-rooms-ii/printjin-gmailcom.py new file mode 100644 index 000000000..32b43070f --- /dev/null +++ b/meeting-rooms-ii/printjin-gmailcom.py @@ -0,0 +1,14 @@ +class Solution: + def minMeetingRooms(self, intervals): + if not intervals: + return 0 + starts = sorted(i[0] for i in intervals) + ends = sorted(i[1] for i in intervals) + s = e = rooms = 0 + while s < len(intervals): + if starts[s] < ends[e]: + rooms += 1 + else: + e += 1 + s += 1 + return rooms From d2bfffbed48e1375c9534187500ecfae6061925d Mon Sep 17 00:00:00 2001 From: printjin Date: Wed, 2 Jul 2025 11:57:08 +0900 Subject: [PATCH 3/3] Solve : Word Search II --- word-search-ii/printjin-gmailcom.py | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 word-search-ii/printjin-gmailcom.py diff --git a/word-search-ii/printjin-gmailcom.py b/word-search-ii/printjin-gmailcom.py new file mode 100644 index 000000000..0af33e32f --- /dev/null +++ b/word-search-ii/printjin-gmailcom.py @@ -0,0 +1,30 @@ +class Solution: + def findWords(self, board: List[List[str]], words: List[str]) -> List[str]: + trie = {} + for word in words: + node = trie + for char in word: + node = node.setdefault(char, {}) + node["$"] = word + rows, cols = len(board), len(board[0]) + result = [] + def dfs(r, c, node): + char = board[r][c] + if char not in node: + return + next_node = node[char] + word = next_node.pop("$", None) + if word: + result.append(word) + board[r][c] = "#" + for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]: + nr, nc = r + dr, c + dc + if 0 <= nr < rows and 0 <= nc < cols and board[nr][nc] != "#": + dfs(nr, nc, next_node) + board[r][c] = char + if not next_node: + node.pop(char) + for r in range(rows): + for c in range(cols): + dfs(r, c, trie) + return result