Choose two problems from an algorithms menu (arrays, strings, hash maps, graphs). For each:
-
state clarifying assumptions,
-
implement a correct solution in your preferred language,
-
analyze time and space complexity,
-
provide tests for edge cases and large inputs, and
-
discuss alternative approaches and trade-offs.