Play With 剑指offer
文章平均质量分 55
123
是杏花微雨
这个作者很懒,什么都没留下…
展开
-
第10题:青蛙跳台阶
1. 题目2. 思路直接参考leetcode解释即可,注意一点 n=0的时候,就是只有0级台阶,只有一种方法就是站着不动,所以f(0)=1。3. 代码class Solution { public int numWays(int n) { // 初始条件 f(0) = 1, f(1) = 1 f(2)=f(1)+f(0) // n=0的时候,就是只有0级台阶,只有一种方法就是站着不动,所以f(0)=1 int a =原创 2021-12-05 21:02:20 · 265 阅读 · 0 评论 -
第10题:斐波那契数列
1. 题目2. 思路方法1:递归,但是有很多重复计算方法2:带备忘录的递归:自顶向下,带备忘录可以避免重复计算方法3:动态规划(自底向上),与递推类似(递推参考:https://mp.weixin.qq.com/s/mJ_jZZoak7uhItNgnfmZvQ)此法只能计算一个数,而带备忘录的是计算出所有数再返回。让a,b一直往下变化,则就可以自底(0)向上(n)计算出 f(n)3. 代码时间O(N),空间O(1)class Solution { public原创 2021-12-05 20:35:26 · 236 阅读 · 0 评论 -
第9题:用两个栈实现队列
1. 题目题目输入输出的意思:输入 CQueue,appendTail,deleteHead,deleteHead。[ [], [3], [], [] ]表示,先实例化CQueue类,然后进行appendTail(3),然后deleteHead(),再deleteHead() 。注意:数组中的3就是操作数!然后输出结果是:null( 创建对象无返回值 )null(appendTail()无返回值 )3( 此时A栈只有一个元素3,B栈空,那么此时deleteHead()返回值就是3 )原创 2021-12-05 15:33:26 · 372 阅读 · 0 评论 -
第7题:重建二叉树
目录1. 题目描述2. 解题思路3. 代码4. 心得体会文章参考1. 题目描述2. 解题思路首先知道前序遍历:根左右。中序:左根右根据以上性质可以推断:前序时第一个是根节点。根据前序结果,在中序时候,搜索根节点可以划分左右子树。根据划分的子树中节点数,可以把前序结果划分为 根 | 左子树 | 右子树之后步骤直接看上面的参考原文即可。就不赘述了。3. 代码在这里插入代码片4. 心得体会分治法树形结构分左右,一般分成左右的都可以考虑分治...原创 2021-12-04 18:21:02 · 531 阅读 · 0 评论 -
第6题:从尾到头打印链表
目录1. 题目描述2. 思路3. 代码1. 题目描述2. 思路3. 代码使用栈,先进后出特性这种先进后出,或者倒序的都可以考虑一下栈/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } // 构造函数 * } */class Solution {原创 2021-11-12 21:43:47 · 366 阅读 · 0 评论 -
第5题:替换空格
目录1. 题目描述2. 思路3. 代码4. String、StringBuffer和StringBuilder的区别参考1. 题目描述2. 思路3. 代码class Solution { public String replaceSpace(String s) { // 新建一个数组 StringBuilder res = new StringBuilder(); // 把字符串转换成 char数组,Character是char的包装类原创 2021-11-12 14:59:52 · 214 阅读 · 0 评论 -
第4题:二维数组中的查找
目录1. 题目描述2. 思考3. 此题思路4. 代码参考1参考21. 题目描述2. 思考上面图片中,我们要找8,我们从左下角开始向右上角找,使用2个指针i ,j。i = 4,j=0时,temp=18,其右边都>18,而 8 < 18,所以18右边的元素都可以排除,然后 i - - 。i=3,j=0时,temp = 10,8 < 10,10右边排除,i - -;i=2,j=0时,temp=3,3<8,3上方的都<3,所以排除,且3!=8,原创 2021-11-12 14:12:48 · 606 阅读 · 0 评论 -
第3题:数组中重复的数字
题目描述思路可以使用hashset,如果数组元素不在hashset中就add,如果已经存在就返回(即结果)。时间和空间复杂度都是O(n),多个set所以O(n)hashset特点参考基于hashmap实现无序且唯一因为无序,所以没有索引操作,只能增强for遍历,普通for(需要索引)add,remove,contains,clear,size等方法hashset和hashmap区别参考一个实现set接口,一个map接口map键值对,set无序所以只能遍历map的key原创 2021-11-11 15:07:20 · 625 阅读 · 0 评论