Algorithm Design Manual is great.
Mocking up the problem on paper or white board is crucial.
The functionality of a hash table can be extrapolated and used to solve many problems at the cost of efficiency.
Arrays can be used to back most higher level data structures. Sometimes a “data structure” is no more than some clever math for accessing locations in an array.
Algorithms - Solved algorithms and data structures problems in many languages.