- LeetCode 58 – Length of Last Word
A warm-up, and on the list because it is one — easy problems are where interviewers watch how you write rather than whether you can. split()[-1] is correct and allocates the whole string to read one word. Scan backwards instead: O(1) space, and end - i needs no plus one.
- LeetCode 57 – Insert Interval
The list arrives sorted and non-overlapping, and re-sorting it throws away the precondition the problem went out of its way to give you. Three sequential loops sharing one index and no if statements, why absorbing needs a min as well as a max, and why the binary-search refinement does not change the complexity.
- LeetCode 56 – Merge Intervals
The gateway to every interval problem, carried almost entirely by one decision: sort by start. Why that reduces overlap to a single comparison against the last output, why the merged end must be a max, why a[0] - b[0] as a comparator is a production bug, and when to sort by end instead.
- AWS – DynamoDB: Keys, Indexes and Access Patterns
DynamoDB rewards you for knowing your queries before you design your table, and punishes you for anything else. Partition key and sort key, why a scan is a bug, and the single-table pattern in the smallest example that shows why it exists. GSIs and LSIs and the difference that cannot be undone after creation, on-demand versus provisioned, and the hot partition that throttles a table that looks under quota.
- LeetCode 55 – Jump Game
A greedy problem that spends most of its time disguised as dynamic programming. nums[i] is a maximum, not an exact jump, which makes the reachable set a prefix with no holes — and that is the justification the greedy needs. One variable replaces the whole DP table, plus the backward version for when you are asked to flip it.