2021.5.17leetcode总结

1、重建二叉树
题目的要求是根据提供的前序遍历和中序遍历来重建一棵二叉树
解题思路:自定义一个重建函数,主函数在设定好范围后,调用即可。重建函数的想法是,首先根据输入的先序的范围进行判断,如果先序遍历范围的左边大于右边,则直接返回NULL。首先根据先序遍历的数组获得根结点的值,然后重建根结点。再根据根结点的值在中序遍历中的位置,获得左子树和右子树的数据范围。然后递归的重建左子树和右子树即可。这里一定要注意重建左子树和右子树的范围,根据样例计算一下count。重建完成后,返回root。

2、用两个栈实现队列。
题目的要求是设计两个栈实现队列的功能,也就是在队列尾部进行插入操作,在队列头部进行删除操作。
首先需要明确的是,队列是一种先进先出的线性结构,也就是说插入操作在队尾进行,删除操作在队列头部进行。
那么可以知道的是,如果是插入操作,则直接push即可。但是要删除怎么办呢?那就涉及到两个栈的分工了——左边的栈负责数据的接受,右边的栈负责数据的删除。也就是说,如果插入,直接插入左边栈的栈顶,如果要删除左边的栈底元素,则将左边栈的元素,按顺序出左栈入右栈,如果右边栈不为空,然后删除右栈的栈顶元素,再按顺序出右栈入左栈。最后返回删除的元素即可(如果右边栈为空,则返回删除的元素为-1)。

3、斐波那契数列
常规的写法是典型的递归写法,但是会超出时间限制。为什么会超出时间限制?是因为每一次的递归都会重复计算好多已经计算过的内容。所以考虑将已经计算过的内容拿数组存起来,减少运算时间。
首先初始化一个值全为0的数组(主函数外定义),然后将数组的第一位和第二位进行固定,然后从第三位开始循环计算。最后返回最后一位即可。

4、青蛙跳台阶问题
这是一个斐波那契数列的变种题,根据给定的条件进行一定的推算就能想到斐波那契数列。
可以根据上面提到的数组的写法来完成,但是此时要注意,数组的第一位和第二位都是1(根据题意改变)。也可以利用多个参数进行递推。
要注意计算过后,赋值的问题。c计算完成后的核心赋值为a = b; b = c;最终一定要返回我们计算完成的c的数值。
注意3和4都需要根据题意来进行取模操作。(取模其实内核就是取余)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值