打基础之,LeetCode算法题第4日刷,这道题开始有点意思了
一直很纠结算法的文章应该怎么写。最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来对吧。
首先定义节点元素的数据结构_Node,其中c字段用来保存摩尔斯电码字符“.”或“-”;flag字段用来标记一个完整的字符串是否编码完毕,它也对应着一个叶节点;lnext 和rnext是指向接下来的_Node节点的两个指针,其中,lnext指向的节点的c字段值是“.”,而rnext指向的节点的c字段指是“-”。
具体实现(可以对照上面的图和下面的代码) ,就是对所有字符串编码后的摩尔斯电码字符串进行遍历,同时创建上面所说的二叉树,用setlenght来统计二叉树的叶节点数量,并返回最终的setlenght即可。
运行结果是毫秒级以下。
python实现
当然执行效率还是很难和C语言比的。儿子要超过老爹也就是也就是效率上赶超赶超。性能上嘛,还是那句话,姜还是老的辣。
领取专属 10元无门槛券
私享最新 技术干货