摘要: 题目:输入一个整型数组,数组里有正数也由负数。数组中一个或者连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。例如输入的数组为{1,-2,3,10,-4,7,2,-5},其最大的子数组为{3,10,-4,7,2},因此所有子数组的和的最大值为 18。应用动态规划法:... 阅读全文
posted @ 2015-07-07 21:00 Stephen_Hsu 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 题目:输入 n 个整数,找出其中最小的 k 个数。例如输入4、5、1、6、2、7、3、8 这 8 个数字,则最小的 4 个数字是 1、2、3、4。这道题最简单的思路莫过于把输入的 n 个整数排序,排序之后位于最前面的 k 个数就是最小的 k 个数。这种思路的时间复杂度显然是 O(n*lgN)。解法二... 阅读全文
posted @ 2015-07-07 20:14 Stephen_Hsu 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 题目:数组中一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为 9 的数组{1,2,3,2,2,2,5,4,2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2. 这道题很多人都会想到对这个数组进行排序。那么在已排序的数组中,位于中间位置的数字就是超过数... 阅读全文
posted @ 2015-07-07 20:13 Stephen_Hsu 阅读(3905) 评论(1) 推荐(0) 编辑
摘要: 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图 4.5 中的二叉树,则依次打印出 8、6、10、5、7、9、11。二叉树结点的定义如下:typedef struct Node{ int m_nValue; Node *m_pLeft; Node *m... 阅读全文
posted @ 2015-07-03 18:55 Stephen_Hsu 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。(假设各个元素不等)解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列p... 阅读全文
posted @ 2015-07-03 18:54 Stephen_Hsu 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。我们或许会想到在栈里添加一个成员变量存放最小的元素。具体思路为:每次压入一个新元素进栈的时候,如果该元素比当前最小的元素还要小,则更新最小元素。但是上述办法存... 阅读全文
posted @ 2015-07-02 20:14 Stephen_Hsu 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中的链表 1 和链表 2,则合并之后的升序链表如链表 3 所示。链表结点定义如下:typedef struct Node{ int m_nValue; struct Node *m_pNext;... 阅读全文
posted @ 2015-06-20 14:08 Stephen_Hsu 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点定义如下:typedef struct Node{ int m_nKey; struct Node Node *m_pNext;}ListNode, *pListNode;分析:为了正确地反转链表,需要... 阅读全文
posted @ 2015-06-20 14:07 Stephen_Hsu 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个链表,输出该链表中倒数第 k 个结点。本题从 1 开始计数,即链表的尾结点为倒数第一个结点。例如一个链表有 6 个结点,从头结点开始它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个结点是值为 4 的结点。链表结点定义如下:typedef struct Node{ ... 阅读全文
posted @ 2015-06-19 21:05 Stephen_Hsu 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个整数数组,实现一个函数来解决该数组中数字的位置,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。本题思路较为简单,我们只需维护两个指针:第一个指针pHead 初始化为数组的第一个元素,第二个指针pTail 初始化为数组的最后一个元素。根据题目要求:所有奇数位于数组的前半部分... 阅读全文
posted @ 2015-06-19 21:04 Stephen_Hsu 阅读(2330) 评论(1) 推荐(0) 编辑