- 博客(5)
- 收藏
- 关注
原创 跳跃表原理
如果您之前不了解跳跃表的原理及实现,那么阅读本文需要10分钟以上的时间。 在作者有限的理解下,本文尽量使用通俗简短的语言来解释跳跃表。 1. 链表的“二分查找” 众所周知,在一个有序的线性表中,使用二分查找可以大大缩短查找效率。比如在一个长度为1024的数组中查找某一元素,我们最多通过10次比较就可以定位到具体元素,时间复杂度为O(logN)。 因为数组可以通过下标访问任意位置的特性,我们对其进行二分查找时会非常方便,只需要每次找到数组中间位置的下标进行比较即可。 但是当我们使用链表作为存储结构时,实现二
2021-07-27 11:19:44
355
原创 单链表的反转
单链表的反转 给定一条单链表的头结点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
191
原创 Linux下Docker的安装
Docker安装及使用 Linux安装Docker yum -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
155
原创 旋转数组的二分查找
旋转数组的二分查找 可参考Leetcode 33、81题 1. 何为旋转数组 讲一个有序数组从任意位置隔断分为两部分,两部分调换位置,调换位置之后的数组即为旋转数组 2. 如何对旋转数组进行二分查找(假定数组中不含重复元素) 重点:对于旋转数组来说,无论从哪一个点将数组分开,左右两边中必有一边是有序的 二分查找步骤:时间复杂度O(logN) 定义三个指针:left、middle、right 比较left是否小于middle,是则左半部分有序,否则右半部分有序 判断要查找的元素是否在有序部分,是则继续
2021-07-21 16:46:54
1834
原创 Java使用循环数组实现队列
利用循环数组实现队列 话不多说,直接上代码 public class ArrayQueue { private int maxSize; private int front; private int tail; private int[] dataArray; /** * 此处引入modCount来计算当前队列拥有的数据个数 * 在不使用单独变量存储队列当前容量时,需要使用下文公式计算
2021-07-10 20:58:23
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅