摘要: 如何在O(1)时间复杂度内求栈中最小元素呢?可以使用两个栈来实现该问题。 参考《Java程序员面试笔试宝典》的实现方法:使用两个栈结构,一个栈(记为S1)用来存储数据,另一个栈(记为S2)用来指示着栈S1的最小元素。元素入栈S1时,如果当前入栈的元素比栈S2中已有元素还小,则把该元素也入栈S2;出栈 阅读全文
posted @ 2017-11-09 16:49 JiaJoa 阅读(1459) 评论(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) 编辑