10 2011 档案
【经典数据结构算法】(3)最大子数组和
摘要:1 /************************************************************************/ 2 /* 3 题目: 4 输入一个整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每一个子数组都有一个和。 5 求所有子数组的和的最大值。要求时间复杂度为O(n)。 6 例如: 7 输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2。 8 因此,输出为该子数组的和18. 9 10 分析:11 可以使用Max_Sum来保... 阅读全文
posted @ 2011-10-17 21:56 Chenny Chen 阅读(317) 评论(0) 推荐(0) 编辑
【经典数据结构算法】(2)设计包含min的栈
摘要:1 /* 2 * 题目: 3 * 设计包含min的栈 4 * 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 5 * 要求函数min、push以及pop的时间复杂度都是O(1) 6 */ 7 8 /* 9 * 分析: 10 * 自己曾经用了一天时间,也没有想出,后来看了别人的分析才知道比较好的解答方法。 11 * 这道题是典型的用空间复杂度换时间复杂度的问题,关键点在于如何保存最小的元素。 12 * 既然要求了时间复杂度低,那么就需要较高的空间复杂度,方法是设计另外一个平行栈,用来保存当前... 阅读全文
posted @ 2011-10-02 22:34 Chenny Chen 阅读(179) 评论(0) 推荐(0) 编辑
【经典数据结构算法】(1)二叉查找树与双向链表之间的转换
摘要:题目参看csdn上的一个很经典的帖子,http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html?60918。但代码都是自己使用C语言写的,思路基本上都是自己想出的,如果参考了帖子上别人的思想,则会注明。 1 /* 2 * 将二元查找树转变为排序的双向链表 3 * 题目:输入一颗二元查找树,将该二元查找树转换成一个排序的双向链表 4 * 要求不能创建任何新的结点,只调整指针的指向。 5 * 如: 6 * 10 7 ... 阅读全文
posted @ 2011-10-01 21:15 Chenny Chen 阅读(861) 评论(2) 推荐(0) 编辑