资讯专栏INFORMATION COLUMN

增强版斐波纳契函数Tribonacci

JellyBool / 807人阅读

摘要:很好地遇到了斐波那契更大的兄弟,。它基本上像斐波纳契一样,但是将序列的最后个而不是个数相加以生成下一个。入参的数组始终包含个数字将始终为非负数,然后返回一个空数组。同时需要注意的的情况。

很好地遇到了斐波那契更大的兄弟,AKA Tribonacci。
它基本上像斐波纳契一样,但是将序列的最后3个(而不是2个)数相加以生成下一个。
所以,如果我们要以开始[1, 1, 1]输入开始我们的Tribonacci序列,我们有这样的序列:

[1, 1 ,1, 3, 5, 9, 17, 31, ...]

我们将开始修改与于[0, 0, 1]如下:

[0, 0, 1, 1, 2, 4, 7, 13, 24, ...]

你需要创建一个给出数组/列表的斐波纳契函数,返回前n个元素 - 包含所有序列。
入参的数组始终包含3个数字; n将始终为非负数; if n == 0,然后返回一个空数组。
同时需要注意的0的情况。

我的解决
  public  double[] tribonacci(double[] s, int n) {
        double[] b = new double[n];

        // 如果长度小于3,则遍历传入的数据并返回对应的长度数组
        if (n < 3) {
            for (int i = 0; i < n; i++) {
                b[i] = s[i];
            }
            return b;
        }

        // 先把传递过来的前三位放到新数组中
        if (s != null && s.length > 0) {
            for (int i = 0; i < s.length; i++) {
                b[i] = s[i];
            }

            // 遍历并放入长度减去3的数值放到新数组中
            for (int i = s.length; i < n; i++) {
                double first = b[i - 3];
                double second = b[i - 2];
                double thrid = b[i - 1];
                b[i] = (first + second + thrid);


            }
        }
        return b;
    }
排名前三的最佳解答

1.

import java.util.Arrays;

public class Xbonacci {
  public double[] tribonacci(double[] s, int n) {

      double[] tritab=Arrays.copyOf(s, n);
      for(int i=3;i

2.

import java.util.Arrays;

public class Xbonacci {
  public double[] tribonacci(double[] s, int n) {

      double[] tritab=Arrays.copyOf(s, n);
      for(int i=3;i

3.

public class Xbonacci {

  public double[] tribonacci(double[] s, int n) {
      // hackonacci me
      if( n == 0 )
        return new double[0];
      double[] res = new double[n];
      for( int i = 0; i < n; i++ ) {
        if( i < 3 )
          res[i] = s[i];
        else
          res[i] = res[i-1]+res[i-2]+res[i-3];
      }
      return res;
  }
}
参考链接

Solutions: Tribonacci Sequence

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74074.html

相关文章

  • 【JS 小短文】变态版斐波那

    摘要:转载自我的博客效率呢斐波那契数列大家应该再熟悉不过了,平时面试也经常会被问到,然而不知道大家有没有考虑过它的效率呢普通版我们一般给出的代码应该是这样的这段代码逻辑完全没问题,但是如果你稍测试一下可能就会发现问题了,比如可以试一下,这时你 转载自 我的博客 效率呢? 斐波那契数列大家应该再熟悉不过了,平时面试也经常会被问到,然而不知道大家有没有考虑过它的效率呢? 普通版 我们一般给出的...

    sihai 评论0 收藏0
  • 算法记录 >> 斐波那数列

    摘要:今天去面试笔试题斐波那契数列实现,虽然很简单。回来想想既然算法这么重要那就从这个开始来记录自己的算法库吧。在数学上,斐波纳契数列以如下被以递归的方法定义,,。斐波拉契算法规律很简单,,观察下数列值就很容易总结出来了。 一、写在前面 算法这块对于大多数程序员(包括我)来说可能都是一个薄弱的地方,如何弥补尼? 每个人都知道那就是学习、特别是算法没有任何捷径可走。 在这记录平时自己工作和生...

    robin 评论0 收藏0
  • 每周一练 之 数据结构与算法(Queue)

    摘要:与堆栈区别队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。移除队列的第一项,并返回被移除的元素。三使用队列计算斐波那契数列的第项。前两项固定为,后面的项为前两项之和,依次向后。 showImg(https://segmentfault.com/img/remote/1460000019005270); 这是第二周的练习题,这里补充下咯,五一节马上就要到了,自己的...

    anquan 评论0 收藏0
  • leetcode 100 斩!回顾

    摘要:斩从第题开始,到现在也差不多快一年了,回顾纪念一下。当时对回溯动态规划也都只是上课的时候学过,也并不熟练。最经典的例子就是斐波那契数列了,求第项数列的值。 leetcode 100 斩!从第 1 题开始,到现在也差不多快一年了,回顾纪念一下。 showImg(https://segmentfault.com/img/bVbu461?w=661&h=191); 为什么开始刷题? 从大一就...

    wyk1184 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<