题解 | 判断链表中是否有环

判断链表中是否有环

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%内容,订阅专栏后可继续查看/也可单篇购买

小白专属-牛客题解 文章被收录于专栏

专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列

全部评论

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
与火:这不接? 留子的钱不挣白不挣
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务