![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
爱吃大盘鸡的小菜鸡
这个作者很懒,什么都没留下…
展开
-
用数组和链表实现泛型的栈和队列
注意的点:1.如何实现iterator:主类继承Iterable接口,嵌套类继承Iterator接口,主类提供iterator()方法获取嵌套类的迭代器对象,嵌套类要重写hasnext();next();remove;三个方法。代码中栈实现了Iterable接口。2.背包的实现只需要add方法,没有移除操作,比较简单, 因此不再实现3.对列的resize的实现,数组中的游离元素代码...原创 2020-01-11 22:32:29 · 285 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 比如1、1、2、3、5、8、13、21、34分析首先想到递归的方法,根据公式F(n)=F(n-2)+F(n-1);(n>=3) 这种情况下 时间复杂度为O(2^n),空间复杂度O(1).代码public class Solution {...原创 2019-12-05 10:44:55 · 166 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。知识点栈和队列(先进后出和先进先出)分析边界条件:由于输入int型,无边界条件自己的思路push操作:若栈2为空,则直接往里push。若不为空,则先把栈2的元素依次出栈到栈1中,把新元素push到栈2,再把栈1的元素依次出栈到栈2中。通过这样的方式,保证每次入栈后新入栈的数据都是...原创 2019-12-04 15:28:11 · 151 阅读 · 0 评论 -
二叉树的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。分析接着前一天的分析工作做的,参考了书籍的分析。今天的分析过程:使用一个番茄钟分析得出:根据中序遍历的特点,左子树-根节点-右子树。既然已经输出了根节点(即给定的节点),则下一步的输出存在两种情况:有无右子树。无右子树根据中序遍历的...原创 2019-12-04 11:18:54 · 99 阅读 · 0 评论 -
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。我的思路:二叉树的遍历方式可以看这https://blog.csdn.net/wjwfighting/article/details/81670...原创 2019-11-24 20:24:13 · 109 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。我的思路 遍历列表,依次存入一个ArrayList中,然后再从后往前将其存入另一个ArrayList中复杂度: 这样的方法时间复杂度O(n),空间复杂度O(n);/*** public class ListNode {* int val;//该节点存...原创 2019-11-22 11:53:29 · 89 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。我的思路:调用系统函数,StringBuilder.replace("","%20")。但这样肯定不行的,不能这样做。剑指Offer提供的解法:要和面试官沟通是否在原来的字符串上进行替换。如果不在的话,就新建,然后复制...原创 2019-11-22 09:36:47 · 170 阅读 · 0 评论 -
判断数组中是否存在重复数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。我的解题思路: 暴力穷举法,依次对比每个数,有重复就return。边界条件: ...原创 2019-11-21 10:17:03 · 5854 阅读 · 1 评论 -
查找一个数是否在二维数组中
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。我的解题思路: 分析发现,左上角和右下角的数分别对应着数组的最小值和最大值。二维数组中对角线的元素分别对应着行列两种情况。通过分别判断这个数是否落在该元素对应的行或列中(行列的...原创 2019-11-20 10:40:48 · 1519 阅读 · 0 评论