LC642. Design Search Autocomplete System

```python class TrieNode: def init(self): self.children = {} self.isWord = False self.hot = 0 class Trie: def init(self): self.trie = TrieNode() # tc O(M) M: length of sentence/word sc O(M) def insert(self,word,freq): d = self.trie for c in word: if c not in d.children: d.children[c] = TrieNode() d = d.children[c]... [Read More]
Tags: Design Trie

1676. Lowest Common Ancestor of a Binary Tree IV

```python class Solution: def lowestCommonAncestor(self, root: ‘TreeNode’, nodes: ‘List[TreeNode]’) -> ‘TreeNode’: “”” tc O(N) sc O(N) “”” nodes = set(nodes) def dfs(node): # return condition if not node: return node if node in nodes: return node leftNodes = dfs(node.left) rightNodes = dfs(node.right) if leftNodes and rightNodes: return node elif leftNodes:... [Read More]
Tags: Tree

1650. Lowest Common Ancestor of a Binary Tree III

class Solution: def lowestCommonAncestor(self, p: 'Node', q: 'Node') -> 'Node': """ assuming all node val are unique tc O(N) sc O(N) """ seen = set() node = p while node: seen.add(node.val) node = node.parent cur = q while cur: if cur.val in seen: return cur cur = cur.parent return None... [Read More]
Tags: Tree

LC82. Remove Duplicates from Sorted List II

# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]: """ tc O(N) sc O(1) """ if not head or not head.next: return head dummy = ListNode(0,head) pre = dummy cur... [Read More]
Tags: LinkedList