算法
文章平均质量分 64
richlaji
这个作者很懒,什么都没留下…
展开
-
计算二进制数中1出现的次数
计算二进制数中1出现的次数概述: 给定一个数,如32位的int类型的整数,由于计算机中存储都是用二进制的形式,所以计算给出的这个整数中出现1的次数 下面介绍一共五种方法: 一、mod 2 对一个整数除以2,如果整除,原来的数字就会少一个最低位的0,否则出现余数则说明最低位是1,下面给出C++代码: //mod 2 int version1(int a) { int count =原创 2015-08-25 13:55:26 · 1263 阅读 · 0 评论 -
阶乘的两个问题
有关阶乘的两个问题一、求N!末尾0的个数 概述 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如N = 10,N! = 3628800,N!的末尾有两个0 思路 对N!进行质因数分解,N! = 2^x + 3^y + 5^z…,由于10 = 2 * 5,所以末尾0的个数M = min(x,z)。同时,易得x > z ,所以M = z。如下给出两个方法 方法1 最直接的方法,计算从1到N的原创 2015-08-27 19:52:48 · 508 阅读 · 0 评论 -
寻找发帖水王
寻找发帖水王 概述 某ID发帖回帖超过总帖子的一半,你现在有一个当前论坛上所有帖子的列表,你能快速找到这个水王吗? 思路 其实这也就是找一个数,这个数在给定的数里面出现次数超过一半的这样一个问题,由于存在这样的一种可能,帖子总数是奇数2n+1,a发帖n个,b发帖n+1个,所以至少需要将所有的帖子遍历一边才能知道谁是水王,最佳的效率就是O(N) 方法1 排序后,再扫描一遍排好序的列表,统计各个I原创 2015-08-27 21:46:20 · 386 阅读 · 0 评论 -
1的数目
1的数目简述给定一个十进制正整数N,返回从1开始,到N的所有整数中出现1的个数(所有出现的1,包括个位、十位、百位等)方法给出两种方法 方法1思路:先考虑怎么计算某个整数中1出现的次数,如121,最直观的方法就是从个位开始判断,一直到最高位,再把出现1的次数加起来返回。然后有了计算某个整数出现的1的个数,就可以利用循环,把1到N出现1的个数都算出来再相加即可。时间复杂度是O(N*lgN),给出代码如原创 2015-08-27 12:18:36 · 336 阅读 · 0 评论 -
寻找最大的k个数
简述给定n个数,从中找到最大的k个数 思路 思路1:最简单的想法,把给定的n个数排序一遍,再取前k个数,复杂度是O(n*logn) + O(k),这里排序用的是快排,顺手下了一个,代码如下 void quickSort(int* array, int begin, int end) { int first = begin; int last = end; int key =原创 2015-09-04 15:28:29 · 377 阅读 · 0 评论 -
01背包
动态规划01背包 思路参考:http://blog.csdn.net/mu399/article/details/7722810 具体题目:一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务。n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求原创 2017-07-06 20:26:45 · 306 阅读 · 0 评论