class Solution: def decodeString(self, s: str) -> str: # time O(max(K)N) space O(max(K)N) # can't use tuple because tuple is immutable st = [["",1]] num = "" for ch in s: #case 1: number if ch.isdigit(): num += ch #case2: [, push "" num to stack, reset num elif ch...
[Read More]
347. Top K Frequent Elements
Brute Force: class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: """ brote force main idea: cnt dictionary + sort + slice time O(NlgN) space O(N) """ res = [] ress = [] d = {} for num in nums: if num not in d: d[num] = 1 else:...
[Read More]
130. Surrounded Regions
DFS solution class Solution: def solve(self, board: List[List[str]]) -> None: # edge case if not board: return row,col = len(board),len(board[0]) # round1: left right border, find 'O', do dfs for i in [0,row-1]: for j in range(col): if board[i][j] == 'O': self.dfs(i,j,board) # round2: top, bottom border for i in...
[Read More]
104 Maximum Depth of Binary Tree
BFS # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right from collections import deque # time O(O) space O(N) class Solution: def maxDepth(self, root: TreeNode) -> int: if not root: return...
[Read More]
LC704 Binary Search
```python class Solution: # time O(lgN) space O(1) def search(self, nums: List[int], target: int) -> int: if len(nums) < 2: return 0 if nums[0] == target else -1 l,r = 0,len(nums)-1 while l <= r: mid = l + (r-l)//2 if nums[mid] == target: return mid elif nums[mid] < target:...
[Read More]