leetcode 算法题1137 (简单297) 第 N 个泰波那契数
- 题目介绍
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n,请返回第 n 个泰波那契数 Tn 的值。
- 示例
输入:n = 4
输:4
解释:T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4
输入:n = 25
输出:1389537
- 提示
0 <= n <= 37
答案保证是一个 32 位整数,即 answer <= 2^31 - 1。
- 解法一
/**
* @param {number} n
* @return {number}
*/
var tribonacci = function(n) {
if(n === 0) {
return 0;
}
if(n < 3) {
return 1;
}
return tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3);
};
递归超时
- 解法二
/**
* @param {number} n
* @return {number}
*/
var tribonacci = function(n) {
let temp = [0, 1, 1];
while(n > 2) {
let t = temp[0];
temp[0] = temp[1];
temp[1] = temp[2];
temp[2] = t + temp[0] + temp[1];
n--;
}
return temp[n];
};
执行用时 : 64 ms, 在所有 JavaScript 提交中击败了94.20%的用户
内存消耗 : 33.6 MB, 在所有 JavaScript 提交中击败了100.00%的用户
- 解法三
/**
* @param {number} n
* @return {number}
*/
let map = {
'0': 0,
'1': 1,
'2': 1
}
var tribonacci = function(n) {
if(map[n] !== undefined) {
return map[n];
}
map[n] = tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3);
return map[n];
};
执行用时 : 64 ms, 在所有 JavaScript 提交中击败了94.20%的用户
内存消耗 : 33.6 MB, 在所有 JavaScript 提交中击败了100.00%的用户