摘要: 题目描述: 求无序数组中任意两个元素的最大差值,以及存在最大差值的组别数. 输入: 输入包含两行,第一行输入一个整数n;第二行n个正整数,用空格隔开. 输出: 输出为一行,包含最大差值,以及存在组别数. 样例输入: 4 4 1 2 1 输出: 3 2 一种实现代码如下(Java版): 阅读全文
posted @ 2017-12-06 21:15 JiaJoa 阅读(1082) 评论(0) 推荐(0) 编辑
摘要: 如何在O(1)时间复杂度内求栈中最小元素呢?可以使用两个栈来实现该问题。 参考《Java程序员面试笔试宝典》的实现方法:使用两个栈结构,一个栈(记为S1)用来存储数据,另一个栈(记为S2)用来指示着栈S1的最小元素。元素入栈S1时,如果当前入栈的元素比栈S2中已有元素还小,则把该元素也入栈S2;出栈 阅读全文
posted @ 2017-11-09 16:49 JiaJoa 阅读(1460) 评论(0) 推荐(0) 编辑
摘要: 快速排序算法是一种较为高效的排序算法,采用了“挖坑填数+分而治之”的思想。该算法的时间复杂度最好时为O(nlogn),最差时为O(n^2),空间复杂度为O(logn),也是不稳定的,适合n值较大的排序任务。 该算法的基本思想是:每次排序都找一个基准位,使得基准位前端的部分每个数都小于该基准位上的数, 阅读全文
posted @ 2017-11-09 16:26 JiaJoa 阅读(12018) 评论(0) 推荐(0) 编辑
摘要: 问题描述:一个数组存在前后两个子序列,并且每个子序列都是有序的,两个子序列的分界处为n.实现对该数组两个子序列合并并进行从小到大的排序。样例输入:数组[1,5,6,7,9,2,4,8,10,13,14],分界处n=5,样例输出:[1,2,4,5,6,7,8,9,10,13,14] 一种实现方式如下( 阅读全文
posted @ 2017-11-09 15:55 JiaJoa 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 题目描述:求一个字符串的最大回文前缀长度。回文是指正反方向读起来都是一样的字符串,比如“abcdcba”就是一个回文。输入:多行字符串。输出:最大回文前缀的长度。 样例输入:abcabcdabcdcabcdcbabcdcba 样例输出:11117 注意本题是求回文前缀的长度,需要从字符串的首部开始, 阅读全文
posted @ 2017-11-07 21:57 JiaJoa 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 问题描述:给定一行整数,其中最后一个数字为其个数,在O(n)的时间里求该整数列中存在的最大差值,并且只能拿右边的数减去左边的数。 例如:10 -5 3 3 , 最大差值为 8 = 3 - (-5); 10 5 2 , 最大差值为 0 = 10 - 10 或者 5 - 5. 实现代码如下(Java版) 阅读全文
posted @ 2017-11-06 16:23 JiaJoa 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 如题,如下代码输出结果是什么? 输出结果: 困惑: 标记1的输出结果有点疑惑。 解释: 阅读全文
posted @ 2017-11-06 15:54 JiaJoa 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 如题,如何计算两个用字符串表示的数字的乘积(包括不带小数位与带小数位情形)呢?对于两个整形数字的乘积还好,若两个数字中包含小数,计算就稍微复杂一些了。 计算两个整形的乘积的过程:先把两个数字的各位保存在int数组或char数组中,然后再申请一个有该两个数组长度和的数组保存各位相乘的结果,同时还要注意 阅读全文
posted @ 2017-11-06 15:30 JiaJoa 阅读(965) 评论(0) 推荐(0) 编辑
摘要: 直接使用现有的基本数据类型(int,long)等保存大数的阶乘结果显然是不行的,因为不论是int,还是long类型,都只能保存一定的数字范围的数,而阶乘的结果可能非常巨大,基本数据类型显然是无法胜任的。那如何计算较大数字的阶乘呢?可以使用数组来保存阶乘的结果,申请一个较大长度的数组便可实现保存较大数 阅读全文
posted @ 2017-11-06 14:48 JiaJoa 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 接着上一篇“使用两个队列模拟一个栈”,这里该如何使用两个栈模拟一个队列呢?具体实现如下: 阅读全文
posted @ 2017-11-04 17:41 JiaJoa 阅读(317) 评论(0) 推荐(0) 编辑