剑指offer
秃顶高富帅
这个作者很懒,什么都没留下…
展开
-
二叉搜索树的后续遍历序列(C++版)
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:1.二叉搜索树的特性是左子树值<=根值<=右子树树值。2.那么该树后序遍历序列的特点是最后一个值是根节点。取出根节点剩下的序列可以分为两段,一段所有的节点值都小于等于根节点,一段所有节点值都大于等于根节点。并且这两段分别各自...原创 2019-02-15 16:51:35 · 386 阅读 · 0 评论 -
和为S的连续正数序列
题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。...原创 2019-02-27 09:24:01 · 134 阅读 · 0 评论 -
二维数组中查找(c++版)
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。两种解法:第一种根据上述二维数组的描述,我们对二维数组进行观察发现,从左下角开始,向上数值是递减的,向右数值是递增的,故我们算法从左下角开始进行。代码如下:class Solution {...原创 2019-02-14 14:21:42 · 808 阅读 · 0 评论 -
和为S的两个数(C++版)
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路:最基本的解法暴力破解,可以得到解,但本题可能包含满足S的多个解,有趣的事通过发现,我们知道越靠近中间的两个数的乘积要大于一小一大的数。类似的有正方形的面积是周长为一个定值的长方形面积的最大值...原创 2019-02-19 17:21:35 · 275 阅读 · 0 评论 -
从尾到头打印单链表(c++版)
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。代码实现:class Solution{public:vector printListFromTailToHead(ListNode* head){vector result;stack arr;ListNode* p=head;while(p!=NULL){arr.push(p->val...原创 2019-02-13 20:29:39 · 391 阅读 · 0 评论 -
二叉树的下一个结点
题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路:分析二叉树的下一个节点,一共有以下情况:1.二叉树为空,则返回空;2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点;3.节点不是根节点。如果该节点是其父节点的左孩子,则返回...转载 2019-02-13 17:22:40 · 89 阅读 · 0 评论 -
判断是否是对称树(C++版)
题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。递归法:思路:首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同,左子树的右子树和右子树的左子树相同即可,采用递归法。public class Solution {boolean isSymmetrical(TreeNode pRoot){if(pRoot...转载 2019-02-13 17:15:33 · 480 阅读 · 0 评论 -
包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)解题思路:可以采用一个辅助数组,来存放当前栈最小的数。如: 栈 3,4,2,5,1辅助栈 3,3,2,2,1 (保存当前最小数)。可以保证用min函数调用时,时间复杂度为(1)。即牺牲空间复杂度来追求时间复杂度。代码如下:class Solution {public:...原创 2019-02-15 19:59:23 · 85 阅读 · 0 评论 -
二叉树中和为某一值的路径(c++)
题目描述:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路:本题采用有记忆的dfs方式,每走一步,将目标值s减掉该节点的值的结果作为下一步递归的目标值,递归求解,如果递归到最后叶节点,如果剩余的目标值等于叶节点的值,那么说明该条路径...原创 2019-02-15 17:37:07 · 927 阅读 · 0 评论 -
通俗易懂讲c++中的sort函数和实例
通俗说明用法:c++中的sort函数一般用来对数组进行排序,有三个参数,第一个参数是是数组的起始位子,第二个参数为你要排序的数组的终止位子。第三个参数一般是排序的条件,可以通过这个参数达到各种各样的排序(后面再讲),也可以不写,默认是升序。如:int arr[5]={1,3,2,5,4}. 操作:sort(arr,arr+5). 结果{1,2,3,4,5} //默认升序如: ...原创 2019-03-23 22:58:37 · 460 阅读 · 0 评论