当前位置: 首页 > news >正文

算法笔记——路径问题

在引入介绍如何写一个算法的时候,我们先引入一个题作为例子

1137. 第 N 个泰波那契数 - 力扣(LeetCode)

作为刚开始学习算法的我们,看到这个题目的时候,应该想好以下的问题:

1.状态表示

我们要用什么来表示每个位置的数值,甚至是返回哪个元素的下标对应的值?

怎么来?——返回的元素是按照题目的什么规律来实现?并且要满足题目的要求?

最后要发现问题中可能出现的子问题,防止有重复,栈溢出等问题。


由题目我们知道每个位置的数是由该数的前三个数据的累加得到的,所以这需要一个数据的存储

————用一个数组存放——dp表——存放到目前位置的数值

2.状态转移方程

了解了需要状态的表示形势后,我们需要将底层逻辑用一个方程表达出来,也就是程序要进行的操作。

设求的是第i位的数据:

dp[i]=dp[i-1]+dp[i-2]+dp[i-3];

3.初始化

接着需要初始化。路径类题目起初都会有一些数据是固定的,那么我们要初始化一些位置的数据。同时也要保证数据访问的时候不会越界。

4.填表顺序

路径问题,填写当前位置的数据的时候,先前的数据已经计算过了——因为是一个逐渐递增的过程,不能跳过许多数据然后直接读取所需要的位置的数据。

5.返回值

要满足题目的要求,返回题目需要的数据


完成以上的操作后,大致的代码就可以实现了

6.优化

在实现完代码后,可以用滚动数组进行一次空间的优化,减少时间和空间的复杂度

http://www.lryc.cn/news/152395.html

相关文章:

  • Arcface部署应用实战
  • MySQL InnoDB 是怎么使用 B+ 树存数据的?
  • 手撕红黑树
  • 举例说明自然语言处理(NLP)技术
  • 淘宝详情API接口在各种应用中的作用性
  • java用正则方法验证文件名是否合法
  • 【learnopengl】Assimp构建与编译
  • 小兔鲜商02
  • 一键替换工程文件和场景中的UI对象字体
  • 微信小程序编辑器代码格式缩进设置
  • Android Aidl跨进程通讯(二)--异常捕获处理
  • Android中OkHttp源码阅读二(责任链模式)
  • 2023年03月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 顺序表链表OJ题(1)——【LeetCode】
  • flex:1
  • iOS练手项目知识点汇总
  • 【Linux】Libevent相关小知识总结
  • 【Spring Security】UserDetailsService 接口介绍
  • Mybatis学习|日志工厂、分页
  • Vivado 添加FPGA开发板的Boards file的添加
  • vmstat
  • LinuxShell变量
  • 如何实现的手机实景自动直播,都有哪些功能呢?
  • 如何让qt tableView每个item中个别字用不同颜色显示?
  • Aspose导出word使用记录
  • [Java]_[初级]_[使用SAX流的方式写入XML文件]
  • java里面封装https请求工具类
  • uniApp常见面试题-附详细答案
  • Java“牵手”1688整店商品API接口数据,通过店铺ID获取整店商品详情数据,1688店铺所有商品API申请指南
  • 数据进制的转换