随笔分类 - 编程之美
摘要:重建二叉树问题描述分析与解法用java实现的代码如下: 1 package chapter3jiegouzhifa.RebuildBinTree; 2 3 /** 4 * 重建二叉树 5 * 递归解法 6 * @author DELL 7 * 8 */ 9 public class Re...
阅读全文
摘要:计算字符串的相似度问题描述分析与解法具体代码如下: 1 package chapter3jiegouzhifa.StringSimilarity; 2 /** 3 * 计算字符串的相似度 4 * 【解法一】 5 * @author DELL 6 * 7 */ 8 public class ...
阅读全文
摘要:电话号码对应英语单词问题描述分析与解法详细代码如下: 1 package chapter3jiegouzhifa.TelephoneMapWords; 2 /** 3 * 电话号码对应英语单词 4 * @author DELL 5 * 6 */ 7 public class Telephon...
阅读全文
摘要:字符串移位包含的问题问题描述分析与解法【解法一】具体代码如下: 1 package chapter3jiegouzhifa.QuestionOfStringMove; 2 /** 3 * 字符串移位包含的问题 4 * 【解法一】 5 * @author DELL 6 * 7 */ 8 pu...
阅读全文
摘要:区间重合判断问题描述分析与解法【解法一】具体代码如下: 1 package chapter2shuzizhimei.qujianchonghe; 2 /** 3 * 区间重合判断 4 * @author DELL 5 * 6 */ 7 public class IntervalOverlap...
阅读全文
摘要:数组循环移位问题描述分析与解法 假如数组为abcd1234,循环右移4位的话,我们希望到达的状态是1234abcd。不妨设K是一个非负的整数,当K为负整数的时候,右移K位,想当于左移(-K)位。左移和右移在本质上是一样的。【解法一】详细代码如下: 1 package chapter2shuzizh...
阅读全文
摘要:子数组之和的最大值(二维)问题描述 我们在前面分析了一维数组之和的最大值问题,那么如果是二维数组又该如何分析呢?分析与解法 最直接的方法,当然就是枚举每一个矩形区域,然后再求这个矩形区域中元素的和。【解法一】完整代码如下: 1 package chapter2shuzizhimei.maxsum...
阅读全文
摘要:求数组的子数组之和的最大值问题描述分析与解法【解法一】具体代码如下: 1 package chapter2shuzizhimei.maxsumsubarray; 2 /** 3 * 求数组的子数组之和的最大值 4 * 【解法一】 5 * @author DELL 6 * 7 */ 8 pu...
阅读全文
摘要:子数组的最大乘积问题描述 给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。 我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于总共有N个(N-1)个数的组合,总的时间复杂度为O(N2),但显...
阅读全文
摘要:寻找最近点对问题描述 给定平面上N个点的坐标,找出距离最近的两个点。分析与解法 我们不妨先看一看一维的情况:在一个包含N个数的数组中,如何快速找出N个数中两两差值的最小值?一维的情况相当于所有的点都在一条直线上。虽然是一个退化的情况,但还是能从中得到一些启发。【解法一】 数组中共包含N个数,我...
阅读全文
摘要:快速寻找满足条件的两个数问题描述 能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的数字,为了简化起见,我们假设这个数组中肯定存在这样一组或以上符合要求的解。分析与解法【解法一】代码如下: 1 package chapter2shuzizhimei.findtwonumber; 2 ...
阅读全文
摘要:寻找数组中的最大值和最小值问题描述 对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢?分析与解法【解法一】 可以把寻找数组中的最大值和最小值看成是两个独立的问题,我们只要分别求出数组的最大值和最小值即可解决问题。最直接的做法是先扫描一遍数组,找出最大的数以及最小的数。这样...
阅读全文
摘要:斐波那契(Fibonacci)数列问题描述递归算法: 1 package chapter2shuzizhimei.fibonacci; 2 /** 3 * Fibonacci数列递归求解 4 * @author DELL 5 * 6 */ 7 public class Fibonacci1 ...
阅读全文
摘要:找符合条件的整数问题描述 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。 解决这个问题首先考虑对于任意的N,是否这样的M一定存在。可以证明,M是一定存在的,而且不唯一。简单证明:因为这是一个无穷数列,但是数列中的每一项取值范围都在[0, N-1]...
阅读全文
摘要:最大公约数问题问题描述 写一个程序,求两个正整数的最大公约数。如果两个正整数都很大,有什么简单的算法吗?分析与解法【解法一】 最简单的实现,就是直接用代码来实现辗转相除法。从上面的描述中,我们知道,利用递归就能够很轻松地把这个问题完成。 具体代码如下: 1 package chapter2sh...
阅读全文
摘要:精确表达浮点数问题描述 在计算机中,使用float或者double来存储小数是不能得到精确值的。如果你希望得到精确计算结果,最好是用分数形式来表示小数。有限小数或者无限循环小数都可以转化为分数。比如: 0.9 = 9/10 0.333(3)= 1/3(括号中的数字表示是循环节) 当然一个小数...
阅读全文
摘要:寻找最大的K个数问题描述在面试中,有下面的问答:问:有很多个无序的数,我们姑且假定它们各不相等,怎么选出其中最大的若干个数呢?答:可以这样写:int array[100] ……问:好,如果有更多的元素呢?答:那可以改为:int array[1000] ……问:如果我们有很多元素,例如1亿个浮点数,怎...
阅读全文
摘要:1的数目问题描述 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。例如: N= 2,写下1,2。这样只出现了1个"1"。 N= 12,我们会写下1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12。这样,1的个数是5。问题是: ...
阅读全文
摘要:寻找发帖“水王”问题描述 Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大"水王",他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该"水王"发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表...
阅读全文
摘要:不要被阶乘吓倒问题描述 阶乘(Factorial)是个很有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题:问题1.给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。问题2.求N!的二进制表示中最低位1的位置。分析与解法...
阅读全文