手撕可以用动态规划, 这是效率和内存消耗比较小的吧