算法题
文章平均质量分 96
weixin_41872403
这个作者很懒,什么都没留下…
展开
-
剑指offer--面试题7:重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路分析: 在二叉树的前序遍历序列中,第一个数字总是树的根节点的值。但在中序遍历序列中,根节点的值在序列的中间,左子树的节点的值在根节点的左边,右子树的节...原创 2019-02-21 14:56:20 · 125 阅读 · 0 评论 -
剑指offer--面试题8:二叉树的下一个节点
题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路分析: 如果一个节点有右子树,那么它的下一个节点就是它的右子树的左子节点。也就是说,从右子节点出发一直沿着指向左子节点的指针,我们就能找到它的下一个节点。 在一个节点没有右子树的情形下,如果该节点是它父节点的左子节点,那么下一个节点就是它的父节点。如果...原创 2019-02-21 16:30:04 · 142 阅读 · 0 评论 -
剑指offer--面试题3:数组中重复的数字
面试题3:数组中重复的数字 题目一: 在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3. 思路分析: 算法1:利用哈希表,从头到尾扫描数组的每一个元素,每扫描一个数字,都用O(1)的时间...原创 2019-02-18 21:32:35 · 109 阅读 · 0 评论 -
剑指offer--面试题4:二维数组中的查找
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路分析: 首先选取数组中右上角的数字。如果该数字等于要查找的数字,则查找过程结束,如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除这个数字所在的行。也就是说,...原创 2019-02-19 10:06:55 · 82 阅读 · 0 评论 -
剑指offer--面试题5:替换空格
题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路分析: 看到这个题目,首先想到的就是原来是一个空格字符,替换之后变成了三个字符,字符串会变长。如果是在原来的字符串上进行替换,就会覆盖修改字符串后面的内存。如果是创建新的字符串,那么我们可以自己分配足够多的内存。 因此有两种不同...原创 2019-02-19 16:01:40 · 119 阅读 · 0 评论 -
八种排序算法总结
排序,就是根据关键码递增或递减的顺序,把数据记录依次排列起来,使一组任意排列的记录变成一组按其关键码线性有序的记录。 习惯性将待排序的数据用“记录”或“元素”表示,且每一个记录内都有一个排序码域作为排序运算的依据,也可称为“关键码”。 对于评述算法优劣术语的说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;...原创 2019-02-26 15:05:19 · 2173 阅读 · 0 评论 -
二叉树的三种遍历方法实现--递归和循环
二叉树是树的一种特殊结构,在二叉树中每个节点最多只能有两个子节点。在二叉树中最重要的操作莫过于遍历,即按照某一顺序访问树中所有节点。通常树有几种遍历方式。 前序遍历:先访问根节点,再访问左子节点,最后访问右子节点。 中序遍历:先访问左子节点,再访问根节点,最后访问右子节点。 后序遍历:先访问左子节点,再访问右子节点,最后访问根节点。 这三种方式都有循环和递归两种实现方式。其中递归实现比循环实现要...原创 2019-02-21 11:09:54 · 470 阅读 · 0 评论