# Algorithms

- [Binary Search](https://interviews.woojiahao.com/algorithms/binary-search.md): Binary search typically appears when the array is sorted or its left and right halves both possess the same properties
- [Sorting](https://interviews.woojiahao.com/algorithms/sorting.md): Sorting algorithms aren't usually tested alone. They are often paired with another problem type and the goal is to really see if you're able to think about the algorithms in a wider context
- [Recursion](https://interviews.woojiahao.com/algorithms/recursion.md): Recursion is quite a typical problem and can be rather tricky to get right on the first go. Try visualizing recursive algorithms by tracing them out on paper with simpler recursions
- [Graph](https://interviews.woojiahao.com/algorithms/graph.md): Graph algorithms are quite common and usually fall under the following algorithms. You will usually be required to modify these algorithms to fit the problem but it's good to know the fundamentals
- [Quick Select](https://interviews.woojiahao.com/algorithms/quick-select.md): Quick select often comes up when the question asks for the first/last K elements or the Kth largest/smallest element
- [Intervals](https://interviews.woojiahao.com/algorithms/intervals.md): Interval problems aren't easy to spot and require some practice, try looking for ways to model the problem as a set of ranges/intervals
- [Binary](https://interviews.woojiahao.com/algorithms/binary.md): Binary problems are quite rare in interviews and even online assessments but it's always good to know
- [Geometry](https://interviews.woojiahao.com/algorithms/geometry.md): Geometry problems are quite niche and I have really only ever encountered a small handful of them myself. Advent of Code 2023 was where I developed these pointers
- [Dynamic Programming](https://interviews.woojiahao.com/algorithms/dynamic-programming.md): Dynamic Programming is an incredibly confusing topic when you first start, it is good to try recognizing commonly occurring patterns to reduce the amount of head scratching you do


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://interviews.woojiahao.com/algorithms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
