java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_5递归与迭代(递归是自己调用自己,迭代是A不停的调用B)整起

其实,就像以为前辈说的一样,不管做题或者说思考的时候用的是哪种算法或者逻辑,**计算机的底层解决问题其实都是离不开穷举,把所有的结果穷举出来然后在所有的结果中挑出最优解即可呗。**只不过呢,

  • 有的穷举的闷头闷脑,哼哧哼哧的,所以时间复杂度比较高
  • 有的穷举逻辑很巧妙,所以时间复杂度很低

一般递归类的问题(也叫动态规划类问题,经常有这种记得不,dp[i]、dp[i][j]、dp[i][j][k]…,人家也把这叫做状态,那TreeNode left = xxxXxx(root.left,…),其实感觉也差不多是一个师门出来的)

  • 咱们无非就是先好多好多层for循环呀、while循环呀整出暴力穷举算法,搞出dp[i]=…、dp[i][j]=…、dp[i][j][k]=…就相当于找出咱们的状态转移方程了呗
  • 然后呢,为了不干重复的事降低咱们遍历的效率(其实在咱们Java那块也是一样的,为了方便提高代码执行效率,咱们经常会封装出XxxTemplate.java或者XxxUtils.java等),用个集合记录一下代码中走过路过的,然后排除一下去除一下重复的东西
    • 加个备忘录就成了自顶向下的动态规划解法了,再改一改,优化一下(一个状态只与前两个状态有关,所以我可以只缓存前两个状态)就成了自底向上的迭代解法了

未完待续…

巨人的肩膀:
labuladong老师,推荐一下他的公众号,干货多多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值