一个有N个整数元素的一维数组A[0],A[1],......,A[n-1],这个数组当然有很多子数组,那么子数组的最大值是什么呢? 分析与解法 我们先明确题意: 1. 题目说的子数组,是连续的; 2. 题目只需要求和,并不需要返回子数组的具体位置; 3. 数组中的元素是整数,所以数组可能包含有正整数 ...
分类:
编程语言 时间:
2016-05-25 23:57:37
阅读次数:
718
第1章 游戏之乐——游戏中碰到的题目 1.1 让CPU占用率听你的指挥 第2章 数字之魅——数字中的技巧 2.1 求二进制中1的个数 2.2 不要被阶乘吓倒 2.3 寻找发帖"水王" ...
分类:
其他好文 时间:
2016-05-25 22:28:29
阅读次数:
453
给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度。 我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于总共有N个(N-1)个数的组合,总的时间复杂度为O(N2),显然这不是最好的解法。 分析与解法 ...
分类:
编程语言 时间:
2016-05-25 00:31:05
阅读次数:
162
能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。 分析与解法 方法一:枚举 从数组中任取两个数字,判断是否满足条件。 显然时间复杂度为N(N-1)/2,即O(N2)。 方法二:查找 我们可以把问题进行转化:对于任意数a ...
分类:
其他好文 时间:
2016-05-24 20:57:09
阅读次数:
177
数组是最简单的一种数据结构。我们经常碰到的一个基本问题,就是寻找整个数组中最大的数,或者最小的数。这时,我们都会扫描一遍数组,把最大(最小)的数找出来。如果我们需要同时找出最大和最小的数呢? 对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢? 分析与解法 解法一:分别求最大和 ...
分类:
编程语言 时间:
2016-05-23 00:50:43
阅读次数:
748
斐波那契数列是一个非常美丽、和谐的数列,有人说它起源于一对繁殖力惊人、基因非常优秀的兔子,也有人说远古时期的鹦鹉就知道这个规律。 每一个学理工科的学生都知道斐波那契数列,斐波那契数列由如下递推关系式定义: F(0)=0, F(1)=1, n>1时,F(n)=F(n-1)+F(n-2)。 每一个上过算 ...
分类:
其他好文 时间:
2016-05-22 18:27:34
阅读次数:
288
任意给定一个正整数N,求一个最小的正整数M(M > 1),使得N*M的十进制表示形式里只含有1和0。 看了题目要求之后,我们首先想到从小到大枚举M的取值,然后再计算N*M,最后判断它们的乘积是否只含有1和0。大体思路可以用下面的伪代码实现: 但问题很快就出现了,什么时候应该终止循环呢?这个循环会终止 ...
分类:
其他好文 时间:
2016-05-20 09:57:14
阅读次数:
427
《编程之美》书中有这样的一道问题“求二进制数中1的个数” 题目:对于一个字节(8bit)的无符号整形变量,求其二进制中“1”的个数,要求算法的执行效率尽可能高。 我使用java语言处理:输出结果是3 本文的问题不在于题目的要求上,而是要清楚java语言中的位数信息。“一个字节(8bit)的无符号整形 ...
分类:
其他好文 时间:
2016-05-16 19:12:18
阅读次数:
122
在计算机中,使用float或double来存储小数是不能得到精确值的。如果你希望得到精确计算结果,最好是用分数形式来表示小数。有限小数或者无限循环小数都可以转化为分数。比如: 0.9 = 9/10 0.333(3) = 1/3(括号中的数字表示是循环节) 当然一个小数可以用好几种分数形式来表示。如: ...
分类:
其他好文 时间:
2016-05-14 22:47:29
阅读次数:
263
问题:假设一个机器仅仅存储一个标号为ID的记录(ID小于10亿的整数),每个数据保存2个备份,这样就有2个机器存储了同样的数据。
提问1:某时间如果得到一个数据文件ID的列表,是否能够快速地找出这个表中仅仅出现一次的ID?
提问2:如果已经知道只有一台机器死机(即只有一个备份丢失)呢?如果有2台机器死机(设同一个数据的两个备份不会同时丢失)?
解提问1转换为有很多ID,其中只有一个ID出现次...
分类:
其他好文 时间:
2016-05-12 19:37:38
阅读次数:
118