每日算法练习题第五篇

感受算法之美,领悟编程真谛!

Posted by LJJ on July 26, 2018

每日算法练习题第五篇

前述:数据结构与算法是计算机应用的基础,也是每一个有趣和富有内涵的工程师基本功,本系列文章旨在记录本小白学习算法的过程以及通过算法和数据结构练习来感受Computer Scince的巨大魅力,吸引着我一直在这上面不断探索摸寻。

注:题目均为转载,大部分来自leetcode–>见 leetcode中文站

栏目分级

通过题目的难度依次从易到难分为三个阶段:

  1. easy
  2. middle
  3. 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