Code Snippets
Small Snippets
Four-direction neighbors on a grid
rows = len(grid)cols = len(grid[0])dir = [(1, 0), (-1, 0), (0, 1), (0, -1)]for dr, dc in dir:nr = row + drnc = col + dcif 0 <= nr < rows and 0 <= nc < cols:# Valid neighbor cellpass
Prefix sum array
prefix = [0]for value in nums:prefix.append(prefix[-1] + value)# Sum nums[left:right + 1] (inclusive)range_sum = prefix[right + 1] - prefix[left]
Graph from edge list
edges = [[0, 1], [1, 2]]n = 3adjacency = [[] for _ in range(n)]for source, target in edges:adjacency[source].append(target)adjacency[target].append(source) # omit for directed graph
Binary tree preorder (iterative)
values = []stack = [root]while stack:node = stack.pop()if not node:continuevalues.append(node.val)stack.append(node.right)stack.append(node.left)
Min-heap / top-K
import heapqheap = []for value in nums:heapq.heappush(heap, value)if len(heap) > k:heapq.heappop(heap)# heap holds the k smallest elements; heap[0] is the largest among them