Python
Heap
Heaps are complete binary trees where the value of each node must be no greater than (or less than) the value of its child nodes.

- Python only supports Min Heaps
import heapqheapq.heapify(arr)heapq.heappop(arr)heapq.heappush(arr, x)heapq.nsmallest(k, arr, key=func)returns a list with theksmallest elements in the iterablearrbased on a comparator functionfunc- Runtime: $O(N \log k)$
heapq.nlargest(k, arr, key=func)returns a list with theklargest elements in the iterablearrbased on a comparator functionfunc- Runtime: $O(N \log k)$
| Operation | Runtime |
|---|---|
| Find min/max | $O(1)$ |
| Search | $O(n)$ |
| Insert | $O(\log n)$ |
| Remove | $O(\log n)$ |
| Heapify Array | $O(n)$ |
List Offsetting
You can offset with Python's enumerate function with list splitting.
python
enumerate(nums[offset::])Dictionary
Alphanumeric Testing
c.isalnum()
Making 2d Arrays
- using
visited = [[False] * len(image[0])] * len(image)will not work- the rows will share the same memory and change in one will reflect on the others
- use
arr = [[0 for i in range(cols)] for j in range(rows)]