题解 | 判断链表中是否有环
判断链表中是否有环
http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
牛客题解
分析:
链表中一道比较经典的题目了,注意正确理解题目所给的条件:
- 第一部分为一个链表。
- 第二部分为一个整数,-1代表该链表没有环,其他非负整数表示链表尾连接到链表中的位置(索引从 0 开始)
- 方法参数中,这个整数并不可见,仅仅是作为一个实际标识情况
解法一:哈希表
具体思路
创建一个Set集合,用于存放链表结点
只要
head!=null从链表头节点开始,将head加入set
head = head.next如果加入失败,说明该结点已经存在,即证明链表存在环
手绘图解
Java参考代码
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
import java.util.*;
public class Solution {
public boolean hasCycle(ListNode head) {
//创建集合
Set<ListNode> set = new HashSet<ListNode>();
while(head!=null){
//判断是否有环
if(!set.add(head)){
return true;
}
//下一个结点
head = head
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
小白专属-牛客题解 文章被收录于专栏
专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列
查看12道真题和解析