Nlogk
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 + dr
nc = col + dc
if 0 <= nr < rows and 0 <= nc < cols:
# Valid neighbor cell
pass

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 = 3
adjacency = [[] 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:
continue
values.append(node.val)
stack.append(node.right)
stack.append(node.left)

Min-heap / top-K

import heapq
heap = []
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