【2020-10-14】LeetCode每日总结

解码方法有几种

LeetCode 91.解码方法

参考题解:leetcode
由于有0的存在,所以更好的方法是从后往前遍历,如果起始是0就返回0;
每一位有2种情况

  • 0 dp[i]=0
  • other 例如226 则该位的解码要么是自己本身要么是跟后面的2连起来成为22,所以是i+1和i+2的解码数加起来 dp[i]=dp[i+1]+dp[i+2];如果该位和后面连起来>26dp[i]=dp[i+1]
    注意找i+1时不要越界

翻转链表内的区间

LeetCode92. 反转链表2
思路:链表分段,最终形态 x x x start [end x x x pre] cur x x x []中是要翻转的部分

  • start 指向m之前的那个节点(或者为空,当m就是头节点时)
  • end 指向m节点,也即是反转之后成为区间段尾,要与最终的cur相连的节点
  • pre 指向cur的前一个节点,最终指向区间段首
  • cur 指向当前操作的节点
    具体操作:
    pre cur cur.next
  • 用一个tmp指向cur.next
  • cur.next指向pre(反转)
  • 开始下一个,pre = cur; cur=tmp;
    注意,start的初始值为null,最后要判断是否是从head开始反转的
    如果从start==null说明是从head开始反转,这时head就成为end,而pre成为head

二叉树的中序遍历(迭代方法)

LeetCode 94. 二叉树中序遍历
用递归方法当然很简单,但有一种通过迭代且不需要辅助栈的方法。

Morris遍历算法

  1. 当遍历到节点x无左孩子时,表示其已经是最左节点,那么加入结果列表,开始遍历x的右子树
  2. 如果x有左孩子,那么需要遍历其左子树,为了向左遍历到最后仍然能找到根x(左根右),找到其左子树的最右节点(称为predecessor,即中序遍历中x的前一个节点),将它的右孩子指回x。这样将predecessor加入结果列表之后,紧接着就是将x加入结果列表

需要解决的问题一:如何遍历查找predecessor节点?
实际上就是x节点向左走一个,然后一直向右走

predecessor = root.left;
while(predecessor.right!=null){
	predecessor = predecessor.right;
}

问题二:找到predecessor之后怎么做?
找到x的前驱节点,那么就应该开始遍历x的左子树了。
问题三:何时将当前根x加入结果?
当x左子树为空时即可,当x左子树遍历完成,最后一个节点即是predecessor,那么它的右孩子是指向x的。
当再次返回x,我们寻找x的predecessor,发现这个节点竟然是有右孩子的,那么就说明左子树已经走完了。把x加入结果集然后开始遍历x的右子树即可。

if(predecessor.right!=null){
	res.add(x.val);
	//断开链接
	predecessor.right=null;
	//开始遍历右子树
	x=x.right;
}

总体来看,第一个分支为x是否有左孩子,有,则开始上面的一通操作。没有,则直接加入结果集并开始遍历右子树。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
旋转变压器---数字转换器作为现代伺服系统中被广泛使用的角位置测量系统,大量应用于高精度及大中型数控系统、机器人控制、工业控制、武器火力控制及惯性导航领域中。 传统的角测量系统面临的问题有:体积、重量、功耗偏大,调试、误差补偿试验复杂,费用较高。本文从微型化、智能化的方向进行研究,是解决传统角测量系统所面临问题的好途径。 本文所研究的旋转变压器---数字转换器是由信号调理模块、系统芯片C8051F064和输出控制模块组成的。整个系统的三路输入信号为X=AsinOcosar、Y=Acosθcos ot和Z=Ucosar(基准信号),输出信号为偏转角θ,输出形式为16 位数字量。信号调理模块是由模拟电路组成的,包括信号输入电路、相敏整流电路、滤波电路和直流稳压电源电路,其难点在于相敏整流电路的设计。信号调理模块的主要功能是把输入的交流信号X=AsinOcosor、Y=Acosθcosot转变成直流信号Bsinθ和Bcosθ,并使输出的直流信号在0~2.4V之间;系统芯片C8051F064是CYGNAL公司近年来推出的一款功能齐全的完全集成的混合信号片上系统型单片机。在本文所设计的系统中,系统芯片的输入信号为直流信号Bsinθ和Bcosθ,通过片内自带的2个16位A/D转换器对输入信号的数据进行采样和转换,并对转换完的数据进行滤波处理,以减小由于外界干扰而产生的误差,再用除法和反正切函数解算出偏转角θ的16位数字量;输出控制模块主要完成的功能是通过UARTO向计算机实时发送由单片机计算出来的偏转角度0的16位数字量,而串口的RS-232电平与单片机系统采用的是TTL电平之间的转换所采用的转换芯片是MC1488和MC1489。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值