算法
文章平均质量分 57
乳酸君在此
这个作者很懒,什么都没留下…
展开
-
N!最低位1的位置
/* *问题:正整数N的阶乘是N!,求N!的二进制数的最低位1的位置 *思路:求最低位1的位置 => 最低位1的位置=N!的二进制数的结尾0的个数 + 1 => N!的二进制数的结尾0的个数=N!中因数2的个数 *解法:N!中质因数2的个数 = N/2 + N/(2x2) + N/(2x2x2) + ... */#include int count(N){ int num = 0原创 2014-03-11 15:12:34 · 701 阅读 · 0 评论 -
N!结尾有多少个0
/**问题:正整数N的阶乘是N!,求N!的结尾0的个数*思路:不能先求N!的值,再求N!的结尾0的个数,因为N!可能非常大。 N!的结尾0的个数 => N!中因数10的个数 => 10=2x5,因数2的个数总是多于5 => N!中质因数5的个数*解法1:遍历1~N,累计每个数中因数5的个数*解法2:N!中质因数5的个数 = N/5 + N/(5x5) + N/(5x5x5) + .原创 2014-03-11 15:11:44 · 611 阅读 · 0 评论 -
水王问题
/* *问题:“水王”的帖子超过论坛帖子的一半,如何从所有帖子中,找出“水王”的ID(每个帖子都包含了作者的ID)? *思路:把问题转化为如何在一个长度为N的无序数组中,找出出现次数超过一半的数? *解法1:先将数组中N个数字排序,再统计每个数字出现的次数,出现次数超过一半的数就是我们要找的数,时间复杂度是O(N*logN + N)。 *解法2:因为所找数字出现的次数超过一半,所以将数组中原创 2014-03-11 15:13:09 · 513 阅读 · 0 评论 -
求二进制数中1的个数
有一个八位的二进制数,求该二进制数中1的个数。1、如果该二进制是无符号的,该怎么做?有三种方法,见代码注释。2、如果该二进制是有符号的,该怎么做?如果是有符号的,想办法把有符号二进制数转换为相应的无符号二进制数。使用java的byte类型来表示该二进制数,但是由于java的byte类型是带符号的。如何把signed byte转换为unsigned byte呢?通过与0xFF原创 2014-03-09 15:29:20 · 593 阅读 · 0 评论 -
二叉查找树转换为有序双向链表
将二叉排序树转换为有序的双向链表,只需调整结点的指针位置。见代码#include #include #define TRUE 1#define FALSE 0typedef int Status;typedef struct BSTNode{ int data; struct BSTNode *left, *right;} BSTNode, *BSTree;/**在原创 2014-03-10 13:08:34 · 622 阅读 · 0 评论