- 博客(5)
- 收藏
- 关注
原创 跳跃表原理
如果您之前不了解跳跃表的原理及实现,那么阅读本文需要10分钟以上的时间。在作者有限的理解下,本文尽量使用通俗简短的语言来解释跳跃表。1. 链表的“二分查找”众所周知,在一个有序的线性表中,使用二分查找可以大大缩短查找效率。比如在一个长度为1024的数组中查找某一元素,我们最多通过10次比较就可以定位到具体元素,时间复杂度为O(logN)。因为数组可以通过下标访问任意位置的特性,我们对其进行二分查找时会非常方便,只需要每次找到数组中间位置的下标进行比较即可。但是当我们使用链表作为存储结构时,实现二
2021-07-27 11:19:44 229
原创 单链表的反转
单链表的反转给定一条单链表的头结点head,将单链表反转并返回(可参考LeetCode 206:反转链表)例:输入【1, 2, 3, 4, 5】 -----> 返回【5, 4, 3, 2, 1】1. 方式一:迭代【适用于无链表头结点,没有开拓额外存储空间】定义三个指针first,second,third。开始时分别指向null,第一个元素,第二个元素。每次将second指向的链表节点反转。然后三个指针一起向后移动,直到移动到最后位置,third指针指向null为止J
2021-07-23 10:48:11 125
原创 Linux下Docker的安装
Docker安装及使用Linux安装Dockeryum -y install docker使用Docker启停Docker# 启动systemctl start docker# 开机自启systemctl enable docker# 停止systemctl stop docker查看docker服务状态systemctl status docker直接访问境外镜像时网络状况一般较差,所以我们选择修改为阿里云镜像。vim /etc/docker/daemon.json#
2021-07-22 23:13:38 92
原创 旋转数组的二分查找
旋转数组的二分查找可参考Leetcode 33、81题1. 何为旋转数组讲一个有序数组从任意位置隔断分为两部分,两部分调换位置,调换位置之后的数组即为旋转数组2. 如何对旋转数组进行二分查找(假定数组中不含重复元素)重点:对于旋转数组来说,无论从哪一个点将数组分开,左右两边中必有一边是有序的二分查找步骤:时间复杂度O(logN)定义三个指针:left、middle、right比较left是否小于middle,是则左半部分有序,否则右半部分有序判断要查找的元素是否在有序部分,是则继续
2021-07-21 16:46:54 1455
原创 Java使用循环数组实现队列
利用循环数组实现队列话不多说,直接上代码public class ArrayQueue { private int maxSize; private int front; private int tail; private int[] dataArray; /** * 此处引入modCount来计算当前队列拥有的数据个数 * 在不使用单独变量存储队列当前容量时,需要使用下文公式计算
2021-07-10 20:58:23 240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人