4月16日学习日记

首先看最重要的一个东西:

Leetcode剑指27.二叉树镜像请完成一个函数,输入一个二叉树,该函数输出它的镜像。

做递归思考三步:

递归的函数要干什么?

函数的作用是判断传入的两个树是否镜像。

输入:TreeNode left, TreeNode right

输出:是:true,不是:false

递归停止的条件是什么?

左节点和右节点都为空 -> 倒底了都长得一样 ->true

左节点为空的时候右节点不为空,或反之 -> 长得不一样-> false

左右节点值不相等 -> 长得不一样 -> false

从某层到下一层的关系是什么?

要想两棵树镜像,那么一棵树左边的左边要和二棵树右边的右边镜像,一棵树左边的右边要和二棵树右边的左边镜像

调用递归函数传入左左和右右

调用递归函数传入左右和右左

只有左左和右右镜像且左右和右左镜像的时候,我们才能说这两棵树是镜像的

调用递归函数,我们想知道它的左右孩子是否镜像,传入的值是root的左孩子和右孩子。这之前记得判个root==null。

刻烟吸肺坚决不忘递归三部曲:::::

  1. 在递归函数内需要做什么?
  2. 递归终止的条件是什么?
  3. 递归函数要传给下一层的东西是什么?

本人的一个好办法就是,在做题时,如果想到是递归,就先把这三句话写出来,顺着这三个目标去做,很快就可以理清思路。

递归的一个关键:只思考一层内的事情,千万不要被绕进去,一旦绕进去,几乎就出不来了。

递归就是多练,多写,这种东西,就得靠脊柱做题。

还有就是dp了,dp也是一个道理,多练多写,现在接触的不够多,所以看到题目总是很茫然。说实话,刷题就是量变引起质变的一个过程。从10分钟内ac简单题开始,慢慢的进步。

同样的,dp也有对应的解题技巧,dp最关键的就是状态转移方程,一般把状态转移方程写出来基本就能解出来。

目前接触的题目来看,我认为状态转移方程入手的角度:可以从终止态入手,往前推,个人感觉一般比从前往后推要容易。同时,可以画出状态转移表。

比方说最简单的跳楼梯这个问题,从前往后推会很让人痛苦。但如果从后往前推。

最后一跳只可能是倒数第二层或倒数第一层,这样的话最优解就是这两跳中的某一跳。那就是Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]) 也就可以得出状态转移方程dp[i]。这样来看的话,是不是很容易呢。

但是可能这种思想也并不完全正确,因为本人还是小白,只是提出了一些自己在从小白成长的路上遇到的认为有价值的方法。也许若干年后回头再看这些,只会觉得羞涩不堪。

刷题是快乐的

曾经和我一起创业的朋友曾经说我现在刷题就是找死,最后什么工作也找不到,我不信这个邪,刷题真的很快乐。如果人生是为了学到更多的知识,而不是为了其他什么东西,那刷题真的是非常有意思的事情。

今天还复习了之前做的二分的题目,虽然现在都能在10分钟内ac,但是总觉得自己其实理解的还不够透彻。等做的题目再多一些的时候,可以做一个总结。 话说,现在做二分就有一种脊柱做题的感觉,很爽,感觉看到绿色通过时,呼吸都会顺畅很多。

二叉树真的很差

很多基础的数据结构,学的其实很不扎实,比方说二叉树和图。老老实实去看算法4吧!明天书就到了,继续看老头讲课了。

对了,定了个不切实际的目标:7月前刷满800道题 400道简单,300道中等,100道困难。

明天还要总结一下这次力扣杯的题目,下周再打周赛。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

troubles_killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值