博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer-递归问题集合(使用迭代的方法对递归问题进行优化)
阅读量:4213 次
发布时间:2019-05-26

本文共 757 字,大约阅读时间需要 2 分钟。

剑指offer中跳台阶,变态跳台阶以及矩形覆盖均是递归类型。递归问题的核心在于找出转移关系,也就是当前项和前一项或是前两项的关系。本文着重点在使用迭代的方法实现递归。

虽然这几道题都没有限定时间复杂度,使用递归均可通过,但是使用迭代的方法可以对其进行优化。
以矩形覆盖为例:
使用递归的方法:

int rectCover(int number) {
int sum,first=1,second=2; if(number<1) return 0; if(number<3) return number; sum=rectCover( number-1)+rectCover(number-2); return sum; }

耗时638ms,内存592k;

使用迭代的方法:

int rectCover(int number) {
int sum,first=1,second=2; if(number<1) return 0; if(number<3) return number; for(int i=3;i<=number;++i) {
sum=first+second; first=second; second=sum; } return sum; }

耗时3ms,内存480K

总结:使用迭代的方法对递归问题进行优化,能够显著的改善时间复杂度,在空间复杂度上性能也有所提升。

转载地址:http://mndmi.baihongyu.com/

你可能感兴趣的文章
SD卡驱动分析--基于高通平台
查看>>
SD Card 驱动流程分析
查看>>
Linux之debugfs介绍
查看>>
关于sd卡中一些概念的理解
查看>>
sd卡驱动分析之相关硬件操作和总结
查看>>
好的播文
查看>>
linux dd命令解析
查看>>
linux find命令详解
查看>>
S3C2440上touchscreen触摸屏驱动
查看>>
USB History Viewing
查看>>
怎样做可靠的分布式锁,Redlock 真的可行么?
查看>>
[图文] Seata AT 模式分布式事务源码分析
查看>>
pm 源码分析
查看>>
Sending the User to Another App
查看>>
kmsg_dump
查看>>
Getting a Result from an Activity
查看>>
Allowing Other Apps to Start Your Activity
查看>>
dev/mem
查看>>
pfn_valid 源码分析
查看>>
dev/kmem 和dev/mem的区别
查看>>