【文件属性】:
文件名称:leetcodepushfront-LinkedList-DoublePointers:链表和双指针技巧的使用
文件大小:6KB
文件格式:ZIP
更新时间:2021-07-07 00:44:09
系统开源
leetcode
push
front
LinkedList-DoublePointers
链表的练习题可以在LeetCode官网上找到
与数组不同,我们无法在常量时间内访问单链表中的随机元素。
如果我们想要获得第
i
个元素,我们必须从头结点逐个遍历。
我们按索引来访问元素平均要花费
O(N)
时间,其中
N
是链表的长度。
链表结构不善于检索操作,但是对于删除操作链表的时间复杂度是O(1),可以在常量级别内解决。
环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数
pos
来表示链表尾连接到链表中的位置(索引从
0
开始)。
如果
pos
是
-1,则在该链表中没有环。
输入:head
=
[3,2,0,-4],
pos
=
1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
判断一个链表中是否有环,可以使用双指针技巧解决。一个安全的选择是每次移动慢指针一步,而移动快指针两步。每一次迭代,快速指针将额外移动一步。如果环的长度为
M,经过
M
次迭代后,快指针肯定会多绕环一周,并赶上慢指针。
在本道题中,我们同样设置两个指针,一个指针每次
【文件预览】:
LinkedList-DoublePointers-master
----README.md(22KB)