剑指offer
Vmorish
这个作者很懒,什么都没留下…
展开
-
剑指offer——不用加减乘除做加法
题意:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。分析:之前自己手动yy了一下,直接用二进制进行位运算,然后没考虑负数,直接WA,接着仔细分析,数分四种情况(a>0,b>0;a>=0,b0;a参考代码:class Solution {public: int Add(int num1, int num2) { int a原创 2017-12-28 17:43:45 · 218 阅读 · 0 评论 -
剑指offer——重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析:先搞清楚二叉树的四种遍历方式(先序遍历:根左右;中序遍历:左根右;后序遍历:左右根;层析遍历:由根往下一层一层的遍历),然后这个题的题意很明显,就是...原创 2018-02-19 22:16:20 · 197 阅读 · 0 评论 -
剑指offer——数组中出现次数超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。分析: 第一种思路,把序列从小到大排个序,然后相同的数字一定是连续的,记录连续数的个数,判断其长度。时间复杂度为O(nlog(n)),时间主要用在排序上。参考代码:c...原创 2018-02-22 20:52:57 · 219 阅读 · 0 评论 -
剑指offer——包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。分析:定义一个辅助栈,保存对应元素存在时当前栈中的最小元素,即可在O(1)的时间内找到最小的数。参考代码:class Solution {public: void push(int value) { if(s_data.empty()){ s_data.push(val...原创 2018-02-25 14:38:13 · 206 阅读 · 0 评论 -
剑指offer——二叉搜索树与双向链表
题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。分析:这个题本质上其实是对二叉搜索树的中序遍历,但是要对结点的指针稍作改动。1.先遍历左子树,将其构造成双链表,并返回链表的‘根’结点;2.得到左子树双链表的最后一个结点;3.如果左子树不为空,将当前根结点追加到左子树链表后;4.遍历右子树,将其构造成双链表,并返回链表的‘根...原创 2018-03-05 10:48:22 · 280 阅读 · 0 评论