Dynamic Programming for Coding Interviews: A Bottom-Up approach to problem solving