
编程之美读书笔记
文章平均质量分 69
阿木木的忧伤
为说的每一句话负责,说者无心、听者有意,作为一个严谨的程序员,不要让你的无心成为别人前进的阻碍
为写的每一句代码负责,不明所以就不要写在项目中,弄清楚每行代码的作用,才能得到真正的提升
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
寻找“发帖”水王
题目是这样的:现在有一个论坛的帖子id列表,其中有一个id在此里表中的数目占总贴的一半还要多,现在要找出这个id 有时还会经常看到这个题目的表中,例如13年考研中的算法题,就是设计一个算法来寻找在一个数组中元素个数超过总个数一半的元素。 (1)如果对这个数组进行先排序的话,排序花费的时间为o(nlogn),再要遍历寻找到此元素,时间复杂度为o(nlogn+n) 其实不用原创 2014-03-11 08:04:59 · 827 阅读 · 0 评论 -
对于一个字节(8bit)的变量,求二进制表示中"1”的个数,要求算法的执行效率尽可能的高
题目中要求执行效率要尽可能的高,我只想到了将除法改为位运算符来实现,还有很多没有考虑的地方。 下面通过几个程序来看这个问题: 1.最简单的程序 #include using namespace std; int main() { unsigned char b_num; int i_count=0; cout<<"请输入一个1~256之间的整数"<<endl;原创 2014-03-10 10:02:56 · 2975 阅读 · 0 评论 -
给定一个整数N,那么N!末尾有多少了0
例如N=10,N!=3628800 末尾有两个零 题目表面看起来很简单,就是要求因式分解后因子有几个5,5X2=10, 只要是偶数就有2这个因子,显然5的个数就代表了N!结果中末尾0的个数 起初我的思路是含有N/5个0,没有考虑到5的次方的问题,导致了问题的错误 正确的解法应该是,先算N/5,则有N/5个5,同时考虑N/5^2 ..... 例如N=1000 N/5 = 200 20原创 2014-03-10 16:08:25 · 1209 阅读 · 0 评论 -
给定一个十进制的正整数N,计算从1开始到N的的所有整数中1出现的个数
这个题目看似很简单,其实是一个复杂的过程。 (一)如果按照平常的思路,依次遍历1到N计算1出现的次数,这样做非常的简单,但是时间是一个苦恼的问题,运算量过大 按照平常思路的代码如下: #include using namespace std; int getCount(int num) { int count = 0; while(num) { count+原创 2014-03-13 15:43:10 · 6477 阅读 · 3 评论