算法练习LeetCode初级算法之动态规划

Posted gavinygm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习LeetCode初级算法之动态规划相关的知识,希望对你有一定的参考价值。

  • 爬楼梯:斐波那契数列

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    注意:给定 n 是一个正整数。

  • 非递归解法

    class Solution {

    public int climbStairs(int n) {

        if (n==1) {

                return 1;

            }

        if (n==2) {

                return 2;

            }

        int n1=1,n2=2;

        for (int i = 0; i <n-2; i++) {

                int m=n1+n2;

                n1=n2;

                n2=m;

            }

    return n2;

    }

    }

  • 递归解法

    class Solution {

        int[] result=null;

    public int climbStairs(int n) {

        result=new int[n+1];

    Arrays.fill(result, -1);

    f(n);

    return result[n];

    }

    private 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];

        }

    }

以上是关于算法练习LeetCode初级算法之动态规划的主要内容,如果未能解决你的问题,请参考以下文章

初级算法-动态规划

LeetCodeLeetCode之跳跃游戏——动态规划+贪心算法

<LeetCode天梯>Day003 买卖股票的最佳时机 II(动态规划法) | 初级算法 | Python

大厂算法面试之leetcode精讲3.动态规划

由Leetcode详解算法 之 动态规划(DP)

算法与LeetCode - 动态规划