Lintcode
jifukui
这个作者很懒,什么都没留下…
展开
-
Lintcode 42. 最大子数组的和
Lintcode的第42题最大子数组的和这道题开始的时候会让人会想的很多感觉没有解决问题的思路很容易写出循环嵌套的暴力解题的算法,其实简单的想想这个问题是很容易解决的。首先将数组分成两类:1包含正数的数组2不包含整数的数组。对于包含正数的数组的处理比较复杂,咱们这里先不说线索对于不包含正数的数组的处理:不包含正数的数组数组不包含正数的解题思路是获取整个数组中的最大值并返回最大值就可...原创 2019-10-31 09:15:21 · 161 阅读 · 0 评论 -
Lintcode 尾部的0
这道算法题不要误解为是计算阶乘使用递归的解法,其实这道题的核心是计算真个阶乘中包含5的个数,但是要注意有一些数包含5的n次幂(n>=2)时的情况,所以算法是循环将数值除5每次除5相当对求包含5的n次幂的个数,直至最后的结果除以5等于0,即不在存在5的n次幂结束,将上述得到的个数累加便是尾部0的个数整个算法的时间复杂度为O(logN)。代码如下:long long data=0; ...原创 2019-04-16 00:09:43 · 887 阅读 · 0 评论 -
Lintcode 尾部的零
这个编程题核心的内容不是进行阶乘的计算,而是根据整个阶乘中5的个数来判断尾部的0的个数。需要注意的是5的2及以上的次方。所以整个的算法思路是循环至少1次判断数据是否被5除商数等于0,商数等于0表示此时不再存在未被统计的5的个数,每次循环都需要记录此次除以5之后的值(表示此情况下找出的5的个数),同时将此值添加在5的个数变量中,直至没有5的个数。程序如下:long long data=0; ...原创 2019-04-15 23:54:04 · 141 阅读 · 0 评论 -
Lintcode 632. 二叉树的最大节点
这道题的考察目的主要是考察二叉树的遍历,遍历整个二叉树获取值最大的节点。遍历二叉树可以使用前序遍历后序遍历和中序遍历,在不使用递归的情况下使用前序遍历最简单,前序遍历的思想很简单,对于每个需要访问的节点只要节点不为空就访问此节点,如果此节点的右子树存在就将此节点压栈,将下一个访问的节点设置为左子树。根据上述的描述程序的流程图为:程序为:TreeNode * maxNode(...原创 2019-06-17 09:41:57 · 165 阅读 · 0 评论 -
Lintcode142. O(1)时间检测2的幂次
这道题的主要的目的是检测整数n是否是2的正整数次幂,要解这道题首先需要注意2点(1)2的正整数幂的值必须是大于0的整数所以小于等于0的数据需要排除。(2)真正要使用的解决方法是使用掩码来计算,大家都知道2的n次幂的数据二进制形式中只会出现1一次,当这个值减去1的话就可以确保这个数据的出现1的位置之后的位置的数据都是1而包括出现1的位置及之前的数据都是0所以进行与计算的时候值为0,我们就使用...原创 2019-06-23 17:51:21 · 227 阅读 · 0 评论