【蓝桥杯算法题】第 N 个泰波那契数问题

news/2024/10/23 9:34:21/

【蓝桥杯算法题】第 N 个泰波那契数问题

    • 题目:为什么下面第一种代码比第二种使用了 更小的内存,有无比这两种实现第 N 个泰波那契数更好的方法?
    • 解答:
    • 更优解:
    • 总结:

题目:为什么下面第一种代码比第二种使用了 更小的内存,有无比这两种实现第 N 个泰波那契数更好的方法?

class Solution {HashMap<Integer,Integer> val= new  HashMap<Integer,Integer>();public int tribonacci(int n) {if(n==0){return 0;}if(n<=2){return 1;}if (val.containsKey(n)) {return val.get(n);}else{int a =  tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3);val.put(n,a);return a;}}
}
class Solution {public int tribonacci(int n) {int a =0;int b=1;int c= 1;if(n==0){return 0;}if(n<=2){return 1;}for(int i =3;i<=n;i++){a=a+b+c;b=b^c;c=b^c;b=b^c;a=a^c;c=a^c;a=a^c;}return c;}
}

解答:

  • 第一种代码使用了 HashMap 来存储计算过的结果,避免了重复计算,可以减少内存的使用。
  • 而第二种代码则只是使用了变量来保存每个数的值,没有进行任何缓存,所以在计算较大的n时会占用更多内存,
    因为需要保存所有之前的值才能继续计算。
  • 所以第一种代码比第二种代码使用了更小的内存。

更优解:

另外可以尝试使用一个数组来保存每个数的值,这样就不用使用 HashMap 或者变量来存储计算过的结果了。这种方式比较简单,代码如下:

class Solution {public int tribonacci(int n) {if (n == 0) return 0;if (n <= 2) return 1;int[] dp = new int[n + 1];dp[0] = 0;dp[1] = 1;dp[2] = 1;for (int i = 3; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];}return dp[n];}
}
  • 这段代码是一个求第n个Tribonacci数的算法实现。Tribonacci数列是类似于斐波那契数列的一种数列,其定义为:T(0) =
    0, T(1) = 1, T(2) = 1,对于 n > 2,有 T(n) = T(n - 1) + T(n - 2) + T(n -
    3)。
  • 具体来说,该算法通过一个动态规划的思想来解决问题。首先,当 n = 0 时,结果直接返回0;当 n <= 2
    时,结果直接返回1。然后,对于大于2的情况,我们创建一个长度为 n+1 的数组 dp,其中dp[i] 表示第 i 个 Tribonacci
    数的值。接着,我们从 3 开始遍历到 n,用递推公式 dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]
    来计算每一个元素。最后返回 dp[n] 即可得到结果。

总结:

整个算法的时间复杂度为 O(n),空间复杂度也为 O(n),因为我们使用了一个额外的数组来存储中间结果。
这种实现方式的时间复杂度和空间复杂度都是 O(n),因为需要保存所有之前的值才能继续计算。但是相比第一种代码,这种方式没有额外的 HashMap 开销,所以可能会稍微快一些。


http://www.ppmy.cn/news/156824.html

相关文章

小米二手手机哪款性价比高

二手小米性价比哪个高&#xff0c;主要看是否满足自己需求然后再是一个价格问题&#xff0c;很多人不懂价格下面给大家带来了最新二手小米的报价图&#xff08;数据来源&#xff1a;换换回收&#xff09;

雷军:向小米手机1首批用户每人赠送1999元红包

本文转载自IT之家 IT之家 8 月 10 日消息 今日晚间&#xff0c;2021 雷军年度演讲召开。小米集团 CEO 雷军宣布向小米手机 1 首批用户每人赠送价值 1999 元的红包。 雷军表示&#xff1a;“十年前&#xff0c;小米 1 开售&#xff0c;1999 元&#xff0c;18.46 万台&#xff0…

小米手机、华为手机、一加手机、小米手环NFC刷门禁卡教程!

此教程教您将门禁卡、考勤卡、会员卡、停车卡、电梯卡等等各种卡片模拟进NFC手机里&#xff0c;从而用手机代替门禁卡 一、软硬件准备 NFC Tool 手机上的IC卡读写编辑软件&#xff0c;搭配蓝牙读卡器或者OTG读卡器&#xff0c;可实现在手机上破解、复制门禁卡&#xff0c;是本文…

高端小米,雷军求“稳”

雷军21日在微博宣布&#xff0c;小米高端手机开始对标苹果&#xff0c;在产品品质和规格方面“向苹果学习”。 对此&#xff0c;有网友调侃&#xff1a; “对标苹果没有问题&#xff0c;但不要只对标价格。”苹果在高端手机市场中的成功&#xff0c;没有一家国产手机想要缺席。…

雷军声称小米手机2赔本卖的真相

四核处理器、2GB RAM、16GB ROM、视网膜屏幕&#xff0c;这款被雷军形容为“碉堡了”的小米2手机让众多“米粉”为之疯狂。1999元的价格&#xff0c;甚至被“米粉”称之为“无敌低价”。雷军声称小米2成本高达2350元。 一张小米手机2代与主流Android机型参数对比图似乎也说明了…

欲抢回最低价5G手机名号,小米即将发布两款创新低的5G手机

华为在昨日发布了它首款价格低于2000元的畅享Z&#xff0c;定价仅为1699元起&#xff0c;创下了5G手机价格的新低&#xff0c;面对华为这一动作&#xff0c;小米自然不好受&#xff0c;毕竟向来5G手机的价格新低纪录都是由它保持的&#xff0c;如今竟然被华为抢了先&#xff0c…

我把华为小米年报放一起,发现华为才是真·手机公司,小米确实不靠卖手机赚钱...

郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI 国产手机界的两大玩家&#xff0c;华为&小米&#xff0c;昨天在同一天前后脚发布了2019年财报。 同行冤家&#xff0c;发财报也碰在了同一天。 那我们就对比着看看吧&#xff1a; 营收&#xff1a;华为消费者业务入账4000多…

小米手机销量超过苹果晋升全球第二

本文转载自IT之家 IT之家 7 月 16 日消息 市场研究公司 Canalys Research 公布的报告称&#xff0c;二季度小米在智能手机市场有史以来首次位居第二&#xff0c;市场占有率达到 17%&#xff0c;超越苹果公司。 对此&#xff0c;小米创始人兼 CEO 雷军发布全员信&#xff0c;称…