数据结构
文章平均质量分 70
朝山行
这个作者很懒,什么都没留下…
展开
-
斐波那契数列的暴力递归方法使用动态规划进行优化
斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34…从第二位开始,每一位都符合一个特征:f(n) = f(n-2) + f(n-1)。1. 暴力递归解法 /** * 时间复杂度为:O(2^n) * @param n 第几位数 * @return 返回第n位上的斐波那契数 */ public static long fibonacci(int n){ if(n < 1){ ret.原创 2022-03-08 17:48:48 · 409 阅读 · 0 评论 -
解析Java中的递归套路
最简单的递归俗称"自己调自己",在一个方法内部调用相同方法的行为。** 递归套路解析**如下,这是一个基础的递归函数,当传参为3时候,打印结果为0 1 2。 public static void recursion(int i){ if(i == 0){ return; } i--; recursion(i); System.out.println(i); }首先从JVM的角度.原创 2022-03-04 15:17:16 · 726 阅读 · 0 评论 -
数据结构之使用双向链表或数组实现环形队列
1. 环形队列分析环形队列是一种复用性极高的数据结构,被使用在许多场景中,如在MySQL的InnoDB存储引擎中被使用于的Redo log日志,在DB挂了的时候,提供即使的数据恢复,保证了其持久性。默认便是有四个文件循环记录修改信息。又例如Disruptor消息队列,其任务队列便是一个环形队列,循环写入,写满即覆盖继续写。逻辑图如下:环形队列的一个主要特性便是当队列满了之后,回到头部继续push,这里可采用两个指针pushPoint和popPoint进行实现。分析图如下。2. 代码实现双向原创 2022-01-17 15:43:49 · 1190 阅读 · 0 评论 -
JDK1.8源码分析LinkedList和ArrayList根据index进行增加和删除时的时间复杂度和空间复杂度
时间复杂度:衡量算法流程中发生了多少次常数时间操作,额外空间复杂度:衡量算法流程中必须开辟的空间。1. LinkedList基于链表实现。/** * Inserts the specified element at the specified position in this list. * Shifts the element currently at that position (if any) and any * subsequent elements to .原创 2022-01-15 15:00:42 · 983 阅读 · 0 评论