随笔分类 - 算法/算法题解
摘要:学算法阶段时不时会遇到一些递归的应用场景,例如DFS,二叉树等相关的题目,递归常常能大展身手。不过有意思的一件事情是,若我们把一些本该迭代的算法改成递归实现,会是什么样的情形。 这是一个很简单的矩阵加法的例子。 void matrixAdd(const std::vector<std::vector
阅读全文
摘要:说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体操作如下图: 结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,
阅读全文
摘要:对于一个给定的数组,若要查找当中是否包含某个值,传统的方法是遍历数组中的每一个元素,如果找到则返回。如果学习过数据结构,也可以立马想到用哈希表来存储,哈希表的查找性能优异,一般可以达到O(1)的时间复杂度,在最坏情况下也有可能达到O(n)的复杂度。但是今天,我将带来一种有意思的查找方式,也就是通过随
阅读全文
摘要:题目大意 有红绿蓝三种颜色,三种颜色当中任意两个颜色混合都可以产生出一个新的颜色(然而混合产生的颜色不能与任何其它的颜色进行混合)。输入三个整数,分别代表红色,绿色,蓝色的颜色个数(每次混合各消耗一个颜色数目),求出能获得的最大颜色数量。 思路 举几个样例找找规律。比如说(1,1,0),原本有两种颜
阅读全文
摘要:题目大意 给定一个正整数N,其序列为[1, 2, 3, ..., N],找到一个长度最大的连续子列,使得其所有元素取与运算的结果为正(最终输出只需要输出最大长度即可)。 思路 刚开始可能并不好注意到,可以举一些小的样例来找规律。比如2:1 & 2 = 0,不满足条件,所以只能取长度为1的数组[1]或
阅读全文
摘要:题目大意 对于一个正整数N,需要找到三个不同的数字A,B,C,使得三个数当中任意两个数字相乘都是N的约数,另外还要使得A,B,C三个数字乘积是N的整数倍数。最后输出三个数字(如果有多种组合,输出任意一种即可),如果找不到满足条件的则输出-1。 思路 注意到1必然是其中一个约数,另外我们可以注意到素数
阅读全文