
牛客网-剑指offer刷题
feiyu2046
这个作者很懒,什么都没留下…
展开
-
二维数组中的查找
题目概述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析从右上角的数字开始检测,如果最右上角的数A大于要检测的数,则A所在的列删除。否则,A所在的行可以删除。 我的提交class Solution { public: bool Find(int target, vect原创 2017-03-18 16:30:59 · 184 阅读 · 0 评论 -
替换空格
问题描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析假设原字符串长度为oriLength,先统计字符串中空格数目b_num,可得到替换后的字符串大小应为b_num*2+oriLength,然后进行从后往前进行检测空格,并赋值。 我的提交class Solution { public:原创 2017-03-18 16:36:00 · 197 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。 分析可以用递归,也可以用一个栈在遍历链表的时候存储对应的节点值,遍历完后,依次弹出栈中元素。 我的提交/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x)原创 2017-03-18 16:39:05 · 220 阅读 · 0 评论 -
根据前序序列和中序序列重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析1、遍历前序序列中的首节点 2、在对应的中序序列种查找对应的位置 3、根据中序序列中找到的位置可以确定前序序列中属于左子树的部分和右子树的部分 4、原创 2017-03-18 16:46:05 · 310 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析假设两个栈分别是Stack1, Stack2。每次push一个元素,都将直接放入Stack1中,同时每删除一个元素,都将先判断Stack2,此时分两种情况:如果Stack2为空,则将Stack1中的元素依次pop到Stack2中去,由于队列是先进先出,此时Stack2中的栈首元素就是之前最早入队列的元素,原创 2017-03-18 16:55:29 · 227 阅读 · 0 评论