Solving the challenge requires building a DLL – something many people have never done before. Figuring this out is the first step. It shows us that you can learn independently and can use the tools of the trade.

The second component of the challenge is algorithmic. A fast solution will require using a data structure and writing a traversal algorithm. The very fastest solutions may require a unique data structure designed specifically for this problem. Designing a good data structure and algorithm shows us that you have a strong understanding of the fundamentals of computer science.

The last part of the challenge is optimization. It’s often possible to improve the performance of your algorithm by a factor of 10 or more by the clever use of optimizations. This component shows a deep understanding of the compiler and the way the processor actually runs your code. Optimization is not necessary for a fast solution, but it can often separate a good solution from a truly great one.