【算法专题】穷举vs暴搜vs深搜vs回溯vs剪枝 接着,我们开始考虑dfs函数所需要做的事情,对于决策树的每个节点,dfs要做的事情无非是:存放数组元素的情况,此时需要把当前数组元素存到path,然后递归调用自己,进入决策树的下一层;本题要求我们将全部为0的二叉树去掉,也就是剪枝,当我们举一个具体的例子进行模拟时,会发现,只关注于对其中一个子树的根节点进行剪枝,由于我们只去掉所有节点都是0的子树,所以需要先判断它的左子树是否被去掉,右子树是否被去掉,最后再判断根节点本身的值是否为0,如果这三个条件全部满足,我们需要告诉这个子树的父亲,该子树被去掉了。
设计模式 工厂模式是创建型设计模式,提供了一种创建对象的有效方式,在工厂模式中,客户程序不需要了解具体对象是如何创建的,而是使用共同结构体指向新创建的对象,实现创建和使用的分离。抽象工厂模式提供一个接口,用于创建一系列相关的对象,无需指定具体的类,可认为是多个工厂方法模式的组合,用于创建一组相关的对象。:通过使用抽象工厂接口来创建一组相关的产品,而无需直接依赖于具体工厂或具体产品的类。:声明一个工厂方法,用于返回产品类型的对象,该方法是抽象方法,由具体工厂类实现。:继承工厂接口,实现工厂方法,返回具体产品类的实例。
【算法专题】字符串 本题要求我们找出最长的公共前缀,首先能想到的就是两两比较字符串,每次比较都找出最长公共前缀,当遍历完字符串数组后,我们就能够得到这个字符串数组的最长公共前缀了。本题的题目描述非常简单,就是给定两个二进制的字符串,实现二进制加法。这和我们在链表专题中,我们做过的两数相加实际上思路是类似的,我们同时从字符串末端开始遍历两个字符串,并把两个数和进位相加的结果存在变量t中,则由于是二进制加法,本位就是t%2,进位则是t/2,当遍历到其中一个字符串结束时,加零即可。