每日算法练习题第五篇
前述:数据结构与算法是计算机应用的基础,也是每一个有趣和富有内涵的工程师基本功,本系列文章旨在记录本小白学习算法的过程以及通过算法和数据结构练习来感受Computer Scince的巨大魅力,吸引着我一直在这上面不断探索摸寻。
注:题目均为转载,大部分来自leetcode–>见 leetcode中文站
栏目分级
通过题目的难度依次从易到难分为三个阶段:
- easy
- middle
- hard
实际演练
step1:合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
示例 1:
输入:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
输出:
合并后的树:
3
/ \
4 5
/ \ \
5 4 7
解题思路:
- 递归实现,分别判断两树是否为空,两树对应节点相加即可。
step2:汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
解题思路:
- 异或再加循环判断即可
代码地址见:Github-Algorithm