zoukankan      html  css  js  c++  java
  • 链表中环的入口

    题目:一个链表中包含环,请找出该链表的环的入口结点。

    思路:先判断有没有环,设快慢指针,快的走两步,慢的走一步,直到指向同一个节点,此时再让快指针从头走,慢指针从刚才的位置,两指针一起走,直到指向一致

     public ListNode EntryNodeOfLoop(ListNode pHead)
        {
            ListNode fast=pHead;
            ListNode slow=pHead;
             
            ListNode cur=pHead;
            while(cur!=null){
                if (fast.next==null||fast.next.next==null) {
                    return null;
                }
                fast=fast.next.next;
                slow=slow.next;
                if(slow==fast){
                    break;
                }
                cur=cur.next;
            }
             
            fast=pHead;
            while(fast!=slow){
                fast=fast.next;
                slow=slow.next;
            }
            return slow;
        }

     来更新一个鬼畜的解

    HashSet<ListNode> set = new HashSet<ListNode>(); 
    
          while (pHead != null) { 
             if (!set.add(pHead)) { //这里判断已经插入了
                return pHead;
          pHead = pHead.next; 
    
      } 
    
      return    null;                    

     补一问,判断是是否有环

        if(head == null) return false;
            ListNode slow = head , fast = head;
            while(fast.next != null && fast.next.next != null){
                slow = slow.next;
                fast = fast.next.next;
                if(fast == slow)
                    return true;
            }
            return false;
        }
  • 相关阅读:
    冒泡排序
    位运算查缺补漏
    单元测试Junit5+Mockito3+Assertj
    插入排序
    Java异常处理
    Redis数据结构-list
    Redis数据结构-hash
    Redis全局命令
    对各向异性高光的理解
    OpenGL投影矩阵(Projection Matrix)构造方法
  • 原文地址:https://www.cnblogs.com/team42/p/6691788.html
Copyright © 2011-2022 走看看