In any algorithm, you see temporary data structures, ranging from string variables to abstract data types(say, arrays, queues, stacks, priority queues, etc). So you have to remember which to use in what kind of problem solving: in depth first search, the temp one is a stack; in breadth first search, the temp one is a queue.<p>Similarly, in some set of problems, you need to remember tricks wrt swapping members in a structure and start solving the problem again.<p>Wherever you have troubles, jot down and refocus on those problems after a month. It’s like spaced repetition. Spaced repetition is not necessary if you are involved with such projects all the time, like the way library writers do.