0
点赞
收藏
分享

微信扫一扫

第 N 个泰波那契数

Python百事通 2021-09-21 阅读 23
今日算法
题目分析:
示例 1:
示例 2:
思路分析:
代码实现:
class Solution {
    public int tribonacci(int n) {
        if (n == 0) return 0;
        if (n == 1 || n == 2) return 1;
       return dfs (n);
    }
    public int dfs(int n) {
        int sum = 0;
        int[] arr = new int[n + 1];
        arr[1] = 1;
        arr[2] = 1;
        for (int i = 3; i <= n; i++) {
            arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];
        }
        return arr[n];
    }
}
递归写法(超时)
class Solution {
   public int tribonacci(int n) {
      return dfs (n);
   }
   public int dfs(int n) {
       if (n == 0) return 0;
       if (n == 1 || n == 2) return 1;
       return dfs(n - 1) + dfs(n - 2) + dfs(n - 3);
   }
}
递归优化(时间复杂度打败100%)
class Solution {
    public int[] arr;
    public int tribonacci(int n) {
        arr = new int[n + 1];
       return dfs (n);
    }
    public int dfs(int n) {
        if (n == 0) {
            return 0;
        }
        if (n == 1 || n == 2) {
            if (arr[n] == 0) arr[n] = 1;
        }
        if (arr[n] == 0) {
            arr[n] = dfs(n - 1) + dfs(n - 2) + dfs(n - 3);;
        } else {
            return arr[n];
        }
        return dfs(n - 1) + dfs(n - 2) + dfs(n - 3);
    }
}
举报

相关推荐

0 条评论