When I see a problem, I never think of using some fancy DSA, I go with basics (array, loops, functions etc.), then try to find out what is the limitation with existing ones, then observe what properties I need in a new DSA, then see which DSA is most likely to help me with this problem.
The same I have tried to explain here, how do I approach a given problem.