第一种方法:直接遍历时,用hashset存放,判断是否存在环 第二种方法:使用快慢指针 ...
分类:
其他好文 时间:
2019-10-09 12:47:57
阅读次数:
81
定义一个单链表 1.链表反转 思路:先将下一节点纪录下来,然后让当前节点指向上一节点,再将当前节点纪录下来,再让下一节点变为当前节点。 2.删除链表某个节点 前提:链表中值都是唯一的 3.判断链表是否有环 4.倒数K个节点 ...
分类:
其他好文 时间:
2019-08-27 21:03:14
阅读次数:
109
因为最近小米电话面试被问到如何判断一个链表是否有环,那今天正好实现以下这个算法 1.链表 内部类的使用,是为了方便调试 测试类: 结果: 测试一: 测试二: 从这里我们可以判断到第二个方法并不能定位到产生环的节点是哪个节点,并且循环次数比第一个多 总结: 方式一:对空间占用比较大,但是时间复杂度底, ...
分类:
其他好文 时间:
2019-06-24 10:37:08
阅读次数:
84
链表分类 单向链表 双向链表 优势: 删除某个节点更加高效, 可以快速找到前驱节点 可以方便的在某个节点前插入元素 循环链表 当要处理的数据具有环形结构的时候, 适合循环链表. 如约瑟夫环问题 双向循环链表 数组的缺点是大小固定, 一旦声明长度就要占用连续的内存空间, 当空间不够用时更换更大的空间, ...
分类:
编程语言 时间:
2019-06-09 16:57:38
阅读次数:
114
第一步:检测链表是否有环。 方法还是比较多的,这里先讲一个:快慢指针。 快慢指针的方法,就是让两个指针同时指向链表。在向后遍历的时候,一个指针每次走两步,称为快指针;一个指针每次走一步,称为慢指针。如果快慢指针相遇,则说明链表有环,否则无环。(后面证明。) 代码实现如下 第二步:找到环的入口。 先画 ...
分类:
其他好文 时间:
2019-04-19 18:03:47
阅读次数:
164
目录 链表的增删(不带头结点) 栈(链表应用) 链表相关面试题 合并两个有序链表 单链表原地逆置 找出链表的倒数第四个节点 找出链表的中间节点 判断单链表是否有环 求链表交点 删除有序单链表中重复的元素 链表按奇数、偶数值拆分 二叉树层次建树 利用队列动态实现二叉树层次建树 ( ) 链表的增删(不带 ...
分类:
编程语言 时间:
2019-04-07 14:23:09
阅读次数:
162
Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked list, we use an integer pos which represents the posi ...
分类:
其他好文 时间:
2019-02-22 18:14:04
阅读次数:
148
源地址:https://leetcode.com/problems/linked-list-cycle/ 判断链表是否有环路 首先最开始想到的办法是存储访问过的节点,之后看当前节点的next是否指向已经遍历过的节点,这样的时间复杂度是O(n),空间复杂度也是O(n)。使用ArrayList存储会非常 ...
分类:
其他好文 时间:
2019-02-05 22:17:21
阅读次数:
188
1.判断一个单链表是否有环 借助STL里的 set ,java里用hashset是一样的,不需要排序,碰到重复key说明有环。 不借助set也可以通过另一种方式: 一个正常指针一次走一个,一个快指针一次走两个。 如果链表有环,快指针一定会和慢指针相遇,相遇的时候,把快指针扔回头结点,然后两个指针都每 ...
分类:
其他好文 时间:
2019-02-01 23:02:01
阅读次数:
196
给定一个链表,判断链表中是否有环。 可以通过快慢指针,当快指针为NULL时就说明没有环,,当快指针追上慢指针,就说明有环。 public boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return ...
分类:
其他好文 时间:
2018-11-04 21:03:22
阅读次数:
98