Dynamic Programming, Recursion, Competitive Programming, Leetcode, 3sum.
Dynamic Programming Dynamic programming rests on two simple properties of the algorithms and the problems it works on. Firstly, a problem needs to have optimal substructure property, namely the property that it is possible to use results of an algorithm for a substructure to compute the results of