剑指Offer
文章平均质量分 67
普通网友
这个作者很懒,什么都没留下…
展开
-
二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从右上角开始比较,如果小于要查找的,则去掉第一行,大于就去掉最后一列实现:C++class Solution {public: bool Find(int targe原创 2017-03-02 20:56:42 · 624 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。实现:C++class Solution {public: void replaceSpace(char *str,int length) { char costr[3 * length]原创 2017-03-04 18:17:36 · 293 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:删除一个元素:当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出。如果stack2为空时,我们把stack1中的元素逐个弹出并压入stack2。由于先进入队列的元素被压到stack1的底部, 经过弹出和压入之后就处于stack2的顶端了,又可以直原创 2017-03-18 17:49:41 · 204 阅读 · 0 评论 -
从头到尾打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值思路:第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。典型的“后进先出”,我们可以使用栈来实现这种顺序。每经过一个结点的时候,把该结点放到栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了。实现:C++/*** struct ListNode {原创 2017-03-12 16:33:33 · 1431 阅读 · 0 评论 -
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:在二叉树的前序遍历序列中,第一个数字总是树的根结点的值。但在中序遍历序列中,根结点的值在序列的中间,左子树的结点的值位于根结点的值得左原创 2017-03-15 07:33:48 · 272 阅读 · 0 评论