剑指offer
成天天
这个作者很懒,什么都没留下…
展开
-
1、二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { bool found=false; ...原创 2018-03-11 21:09:58 · 85 阅读 · 0 评论 -
2、替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。从后往前循环class Solution {public: void replaceSpace(char *str,int length) { if(str==NULL||length<0) return...原创 2018-03-11 21:11:41 · 96 阅读 · 0 评论 -
3、从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值。思路:由于单链表是没有办法获取到其前面一个节点的,除非用额外空间来保存节点,此题从尾到头打印,使用栈结构,先遍历单链表,把节点值存入栈中,然后再利用栈的先进后出特性依次弹出栈顶值即可/*** struct ListNode {* int val;* struct ListNode *next;* ListNod...原创 2018-03-11 21:15:10 · 85 阅读 · 0 评论 -
4、重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 1、前序遍历第一个元素1即为根节点; 2、在中序遍历中找到1,1左边的元素属于根节点的左子树,右边的元素属于右子树; 3、因此可以得到根节点的左子...原创 2018-03-11 21:25:05 · 84 阅读 · 0 评论 -
用两个栈实现队列
题目要求: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路: 栈先进后出、队列先进先出;用两个栈sta1、sta2,每次push元素都放到sta1中;每次pop元素,先判断sta2是否为空,若为空,则将sta1里都元素全部移动到sta2中,在pop sta2中到元素;若sta2不为空,则直接pop sta2中到元素。(可以自...原创 2018-11-01 12:08:50 · 75 阅读 · 0 评论