剑指offer编程学习
文章平均质量分 64
KFLING
爱笑的女生运气不会太差!
展开
-
面试题6:重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出该二叉树。
假设输入的前序遍历和中序遍历的结果中都不含重复数字。例如:输入前序遍历序列{1,2,4,7,3,5,6,8},和中序遍历序列{4,7,2,1,5,3,8,6}要求重建出该二叉树,并输出其头结点。二叉树结点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m...原创 2018-03-30 15:31:43 · 515 阅读 · 0 评论 -
面试题7:用两个栈实现队列的c++代码实现
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead。分别完成在队列尾部插入结点和在队列头部删除结点的功能。队列的声明如下:template<typename T>class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T& ...原创 2018-03-30 15:39:27 · 412 阅读 · 0 评论 -
面试题8:求旋转数组的最小数字的c++代码实现
题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。c++代码实现:int Min(int* numbers, int length){ if(numbers == NULL || length <=0) throw new ...原创 2018-03-30 15:51:00 · 303 阅读 · 0 评论 -
面试题5:从尾到头打印链表的c++代码实现
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。链表结点的定义如下:struct ListNode{ int m_nKey; ListNode m_pNext;};思路分析:解决这个问题要遍历链表。链表的顺序是从头到尾的顺序,输出的顺序是从尾到头,是典型的后进先出,可以用栈来实现这种顺序。c++代码实现:void PrintListReversingly_I...原创 2018-03-30 15:24:45 · 383 阅读 · 0 评论 -
字符串的全排列c++代码实现
面试题28:字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列。(假设字符串中所有字符都不相同)例如:输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。将大问题分解为小问题,本题思路是:把字符串看成有两部分组成:第一部分是它的第一个字符,第二部分是后面的所有字符。求整个字符串的排列,可以分成两步:首先求所有可能出现在第一...原创 2018-05-04 23:22:20 · 6979 阅读 · 2 评论 -
求字符串的所有组合数(分冶法+递归)c++代码实现
题目:输入一个字符串,求字符的所有组合。例如输入字符串abc,则它的组合有a、b、c、ab、ac、bc、abc。当交换字符串中的两个字符时,虽然能得到两个不同的排列,但却是同一组合。下面假设字符串中所有字符都不相同。如果输入n个字符,则这n个字符能构成长度为1的组合、长度为2的组合、。。长度为n的组合。在求n个字符的长为m(1<=m<=n)的组合的时候,采用分冶法的思想,将大问题分解成...原创 2018-05-06 11:55:25 · 2058 阅读 · 0 评论 -
求字符串的全排列的递归实现(对字符串中有相同字符也适用)
题目:输入一个字符串,打印出该字符串中字符的所有排列。接着上一篇,但此代码对字符串中有相同字符也同样能正确输出结果。例如:输入字符串abbc,则打印出由字符a、b、c所能排列出来的所有字符串abbc、abcb、acbb、babc、bacb、bbac、bbca、bcba、bcab、cbba、cbab、cabb。相比于字符串中所有字符都不相同的情况,这时只需要增加一个函数,在对字符串中两个字符交换之前...原创 2018-05-06 12:08:22 · 656 阅读 · 0 评论 -
笔试题2:实现把字符串中的每个空格进行替换
题目:实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出"We%20are%20happy"。做字符串中空格的替换就要统计出字符串中空格出现的次数,因此遍历字符串,统计字符串的长度以及空格出现的次数。然后计算下替换之后新字符串的长度。在给字符数组预分配内存大小时,一定要分配的大小比替换之后新字符串的长度要长。然后在原字符串基础上去修改字符串,为减少时间...原创 2018-05-28 23:54:04 · 502 阅读 · 0 评论