Answer: basic logic is Steps(n) = Steps(n - 1) + Steps(n - 2)
Copied from Jiuzhang:
/** * 本参考程序来自九章算法,由 @九章算法 提供。版权所有,转发请注明出处。 * - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。 * - 现有的面试培训课程包括:九章算法班,系统设计班,算法强化班,Java入门与基础算法班,Android 项目实战班, * - Big Data 项目实战班,算法面试高频题班, 动态规划专题班 * - 更多详情请见官方网站:http://www.jiuzhang.com/?source=code */ public class Solution { public int climbStairs(int n) { if (n <= 1) { return n; } int last = 1, lastlast = 1; int now = 0; for (int i = 2; i <= n; i++) { now = last + lastlast; lastlast = last; last = now; } return now; } } // 记忆化搜索 // 九章硅谷求职算法集训营版本 public class Solution { /** * @param n: An integer * @return: An integer */ int[] result = null; void f(int X) { if (result[X] != -1) return; if (X == 0 || X == 1) { result[X] = 1; return; } f(X - 1); f(X - 2); result[X] = result[X - 1] + result[X - 2]; } public int climbStairs(int n) { if (n == 0) { return 0; } result = new int[n + 1]; for (int i = 0; i <= n; ++i) { result[i] = -1; } f(n); return result[n]; } }
No comments:
Post a Comment