2016年7月1日

丑数

摘要: 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 思路1:遍历 思路2: 根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以 阅读全文

posted @ 2016-07-01 19:33 三颗心 阅读(356) 评论(0) 推荐(0) 编辑

连续子数组的最大和

摘要: 题目:输入一个整形数组,数组里有正数也有负数。组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 思路:当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清 阅读全文

posted @ 2016-07-01 16:38 三颗心 阅读(538) 评论(0) 推荐(0) 编辑

最小的K个数

摘要: 题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路1:我们通过快排找到第k个数,然后比他的小的都在左边,比他大的都在右边。 思路2:应对大数据的情况,首先取数组中前k个数字建立大根堆,建立堆之后,从第k+1个元素开始 阅读全文

posted @ 2016-07-01 15:06 三颗心 阅读(380) 评论(0) 推荐(0) 编辑

2016年6月30日

数组中出现次数超过一半的数字

摘要: 题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。 思路:一个数字在数组中出现次数超过了一半,则排序后,位于数组中间的数字一定就是该出现次数超过了长度一半的数字(,也即是说,这个数字就是统计学上的中位数。事实上可以不用对数组进行排序,或者说仅部分排序,受快速排序的partition 阅读全文

posted @ 2016-06-30 21:03 三颗心 阅读(980) 评论(0) 推荐(0) 编辑

2016年6月29日

字符的排列

摘要: 问题:输入一字符串(要求不存在重复字符),打印出该字符串中字符中字符的所有排列。 思路:求所有可能出现在第一个位置的字符,把第一个字符和其后面的字符一一交换。固定第一个字符,求后面所有字符的排列。这个时候扔把后面的所有字符分成两部分:后面字符的第一个字符,以及这个字符之后的所有字符,然后把第一个字符 阅读全文

posted @ 2016-06-29 21:00 三颗心 阅读(410) 评论(0) 推荐(0) 编辑

二叉搜索树与双向链表

摘要: 题目:输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。 思路:采用中序遍历将二叉树从小到大遍历每一个结点,通过改变指针来实现双向链表。 阅读全文

posted @ 2016-06-29 18:45 三颗心 阅读(417) 评论(0) 推荐(0) 编辑

复杂链表的复制

摘要: 题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: 请完成函数ComplexNode* Clone(ComplexNode* pHead),以复制一个复杂链表。 思路:分三步,在不用辅助空间 阅读全文

posted @ 2016-06-29 13:13 三颗心 阅读(625) 评论(0) 推荐(0) 编辑

2016年6月27日

二叉搜索树的后序遍历序列

摘要: 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路:需要遍历树,二叉排序树的特点是 lchild.key < root.key < rchild.key 那么我们使用分治思想,先利用上面特点将左右子树 阅读全文

posted @ 2016-06-27 17:18 三颗心 阅读(385) 评论(0) 推荐(0) 编辑

从上往下打印二叉树

摘要: 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 思路:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。 阅读全文

posted @ 2016-06-27 15:57 三颗心 阅读(662) 评论(0) 推荐(0) 编辑

栈的压入、弹出序列

摘要: 题目:判断一数字序列是否为这些数字入栈的一种出栈方式(前提:栈中的数字不重复) 思路1:如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹出的数字不在栈顶,我们把压栈序列还没有入栈的数字压入辅助栈,知道把下一个要弹出的数字压入栈顶为止。如果所有的数字都压入了仍然没有找到下一个弹出的数字, 阅读全文

posted @ 2016-06-27 13:58 三颗心 阅读(776) 评论(0) 推荐(0) 编辑

导航