No.1137 第N个泰波那契数

泰波那契序列 Tn 定义如下: 

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

 

示例 1:

输入:n = 4
输出:4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

示例 2:

输入:n = 25
输出:1389537

 

提示:

  • 0 <= n <= 37
  • 答案保证是一个 32 位整数,即 answer <= 2^31 - 1

思路分析

通过观察,发现题目要求的是一个数列的和。而且这个数列可以通过前面的3项来计算得到后面的一项。因此我们可以用最简单的暴力算法来做。 也就是我们新建一个数组,里面有固定的三项[0,1,1]。这是题目中给我们的条件,然后我们根据给入的n去计算到我们需要的地方,就可以获得第 N 个泰波那契数了

Rust代码


#![allow(unused)]
fn main() {
struct Solution;
impl Solution {
    pub fn tribonacci(n: i32) -> i32 {
        let n = n as usize;
        let mut v = vec![0, 1, 1];
        let mut cur_len = 3;
        while cur_len <= n {
            v.push(v[cur_len - 1] + v[cur_len - 2] + v[cur_len - 3]);
            cur_len += 1;
        }
        v[n]
    }
}
}

运行效果

fn main() {
pub fn tribonacci(n: i32) -> i32 {
   let n = n as usize;
   let mut v = vec![0, 1, 1];
   let mut cur_len = 3;
   while cur_len <= n {
       v.push(v[cur_len - 1] + v[cur_len - 2] + v[cur_len - 3]);
       cur_len += 1;
   }
   v[n]
}
println!("{:?}", tribonacci(2));
}