![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
文章平均质量分 76
晓晨同月
这个作者很懒,什么都没留下…
展开
-
算法练习六:旋转数组的最小数字
#include#includeusing namespace std;/*把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1*//*思路:二分查找的变体,旋转数组可以看成是两个有序数组,只要找到第一个数组的最后一个下标start原创 2015-11-19 21:19:03 · 401 阅读 · 0 评论 -
算法练习三:从尾到头打印链表
/*输入一个链表,从尾到头打印链表每个节点的值。 思路1:反转链表,然后输出*//*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/原创 2015-11-19 16:11:33 · 326 阅读 · 0 评论 -
算法练习五:用两个栈实现队列
#include#includeusing namespace std;/*用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。思路:入栈两次在出去即为队列顺序,将stack2作为出队操作,一旦stack2为空,将stack1中的内容全部入到stack2中,这是为了保证所有元素出队顺序不变*/stack stack1;stack stack2;voi原创 2015-11-19 20:13:55 · 377 阅读 · 0 评论 -
算法练习二:替换空格
#includeusing namespace std;/*请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:遍历一遍,遇到空格就行相应的替换操作,复杂度O(n*n)*/void replaceSpace(char *str,int length){ if(length <原创 2015-11-19 15:38:17 · 474 阅读 · 0 评论 -
算法练习一:二维数组中的查找
#include#includeusing namespace std;/*在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:从左下角开始,目标值大则横向增加,小则向上,时间复杂度O(m+n)*/bool Find(vector > myarray,int原创 2015-11-19 14:40:28 · 401 阅读 · 0 评论 -
算法练习四:重建二叉树
#include#include"CommenDefine.h"#includeusing namespace std;/*输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回思路:递归*/stru原创 2015-11-19 19:19:39 · 361 阅读 · 0 评论