zoukankan      html  css  js  c++  java
  • 141-环形链表

    给定一个链表,判断链表中是否有环。
    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
     
    示例 1:
    输入:head = [3,2,0,-4], pos = 1
    输出:true
    解释:链表中有一个环,其尾部连接到第二个节点。
    
    
    示例 2:
    输入:head = [1,2], pos = 0
    输出:true
    解释:链表中有一个环,其尾部连接到第一个节点。
    
    
    示例 3:
    输入:head = [1], pos = -1
    输出:false
    解释:链表中没有环。
    
    
     
    进阶:
    你能用 O(1)(即,常量)内存解决此问题吗?
    
    解法1:哈希
    public boolean hasCycle(ListNode head) {
            Set<ListNode> set=new HashSet<>();
            ListNode a=head;
            while (a!=null){
                set.add(a);
                a=a.next;
                if (set.contains(a)){
                    return true;
                }
            }
            return false;
        }
    
    
    解法2:快慢指针
    public boolean hasCycle(ListNode head) {
          if (head==null||head.next==null){
              return false;
          }
          ListNode fast=head;
          ListNode slow=head;
          while (fast!=null&&fast.next!=null){
              fast=fast.next.next;
              slow=slow.next;
              if (fast==slow)
                  return true;
          }
          return false;
    }
  • 相关阅读:
    Arduino开发版学习计划--直流电机
    Arduino开发版学习计划--蜂鸣器
    社交网络编程API之iOS系统自带分享
    iOS解析XML实现省市区选择
    Frameworks(不定时更新)
    NSLayoutConstraint
    Categories  VS Extensions (分类 vs 扩展)
    strong vs copy
    折半查找
    Block
  • 原文地址:https://www.cnblogs.com/dloading/p/10864568.html
Copyright © 2011-2022 走看看