摘要: 题目描述输入n个整数,找出其中最小的k个数。例如输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。题目分析剑指Offer(纪念版)P167代码实现O(n)的算法,只有当我们可以修改输入的数组时可用void GetLeastNumbers_Solution1(int* i... 阅读全文
posted @ 2015-09-23 15:50 枯桃 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。题目分析剑指Offer(纪念版)P163代码实现int MoreThanHalfNum_Solutio... 阅读全文
posted @ 2015-09-23 15:41 枯桃 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。题目分析剑指Offer(纪念版)P154代码实现回溯法--排序树void Permutation(char* pStr... 阅读全文
posted @ 2015-09-23 15:35 枯桃 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。比如输入图4.12中左边的二叉搜索树,则输出转换之后的排序双向链表。二叉树结点的定义如下:题目分析剑指Offer(纪念版)P151代码实现BinaryTreeNode* Conv... 阅读全文
posted @ 2015-09-23 15:31 枯桃 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题目描述有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL,请完成函数ComplexListNode* Clone(ComplexListNode* pHead),以复制一个复杂链表。结点的定义如下:struct Comp... 阅读全文
posted @ 2015-09-23 15:25 枯桃 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:题目分析剑指Offer(纪念版)P143代码实现我们用标准模板库中的vector实现了一个栈来保存路径,这里没有直接用STL中的s... 阅读全文
posted @ 2015-09-23 15:18 枯桃 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入一个整数数组,判断该数组是不是某二叉排序树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。题目分析剑指Offer(纪念版)P140代码实现// BST:Binary Search Tree,二叉搜索树bool VerifySquence... 阅读全文
posted @ 2015-09-23 15:09 枯桃 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 题目描述从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。二叉树结点的定义如下:题目分析剑指Offer(纪念版)P137代码实现层序遍历void PrintFromTopToBottom(BinaryTreeNode* pRoot){ if(pRoot == NULL) ... 阅读全文
posted @ 2015-09-23 15:05 枯桃 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。题目分析剑指Offer(纪念... 阅读全文
posted @ 2015-09-23 14:57 枯桃 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。题目分析剑指Offer(纪念版)P132代码实现template void StackWithMin::push(const T& value){ ... 阅读全文
posted @ 2015-09-23 14:53 枯桃 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。题目分析剑指Offer(纪念版)P125代码实现前序遍历void MirrorRecursively(BinaryTreeNode *pNode){ if(pNode == NULL) return; if(pNode-... 阅读全文
posted @ 2015-09-23 14:41 枯桃 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入两棵二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下:题目分析剑指Offer(纪念版)P117代码实现第一步,在树A中查找与根结点的值一样的结点,这实际上就是树的遍历。先序遍历:bool HasSubtree(BinaryTreeNode* pRoot1, BinaryTree... 阅读全文
posted @ 2015-09-23 14:14 枯桃 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图3.7中的链表1和链表2,则合并之后的升序链表如链表3所示。链表结点定义如下:题目分析剑指Offer(纪念版)P114代码实现ListNode* Merge(ListNode* pHead1, ListN... 阅读全文
posted @ 2015-09-23 13:59 枯桃 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目描述定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点定义如下:题目分析剑指Offer(纪念版)P112代码实现ListNode* ReverseList(ListNode* pHead){ ListNode* pReversedHead = NULL; ... 阅读全文
posted @ 2015-09-23 13:55 枯桃 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。题目分析剑指Offer(纪念版)P107代码实现ListNod... 阅读全文
posted @ 2015-09-23 13:49 枯桃 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 数组面试题3:二维数组中的查找 面试题8:旋转数组的最小数字 面试题14:调整数组顺序使奇数位于偶数前面 面试题20:顺时针打印矩阵 面试题29:数组中出现次数超过一半的数字 面试题30:最小的k个数 面试题31:连续子数组的最大和 面试题33:把数组排成最小的数 面试题36:数组中的逆序对 面试题... 阅读全文
posted @ 2015-09-23 10:13 枯桃 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。题目分析剑指Offer(纪念版)P102代码实现快速排序的思想:void ReorderOddEven_1(int *pData, unsigned int length){ ... 阅读全文
posted @ 2015-09-23 10:11 枯桃 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目描述给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该节点。链表结点与函数的定义如下:题目分析剑指Offer(纪念版)P99代码实现void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted){ if(!pLi... 阅读全文
posted @ 2015-09-23 10:04 枯桃 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入数字n,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。题目分析剑指Offer(纪念版)P94代码实现void Print1ToMaxOfNDigits_2(int n){ if(n <= 0) return; c... 阅读全文
posted @ 2015-09-23 09:59 枯桃 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题目描述实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。题目分析剑指Offer(纪念版)P90代码实现bool g_InvalidInput = false;double Power(d... 阅读全文
posted @ 2015-09-23 09:45 枯桃 阅读(133) 评论(0) 推荐(0) 编辑