zoukankan      html  css  js  c++  java
  • LeetCode 160 相交链表

    LeetCode 160 相交链表

    题目描述:
    编写一个程序,找到两个单链表相交的起始节点。

    执行用时:2 ms, 在所有 Java 提交中击败了28.55%的用户
    内存消耗:42.5 MB, 在所有 Java 提交中击败了71.52%的用户

    构造成环

    public class Solution {
        public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            //边界条件
            if(headA==null || headB==null) {
                return null;
            }
            //构造成环
            ListNode tail = headA;
            while(tail.next!=null) {
                tail = tail.next;
            }
            tail.next = headA;
    
            //判断有无环
            ListNode p1 = (headB!=null)?headB.next:headB;
            ListNode p2 = (p1!=null)?p1.next:p1;
            while(p1!=null && p2!=null && p1!=p2) {
                //慢指针
                p1 = (p1!=null)?p1.next:p1;
                //快指针
                p2 = (p2!=null)?p2.next:p2;
                p2 = (p2!=null)?p2.next:p2;
            }
    
            //寻找相遇位置
            if(p1!=null && p2!=null) {
                p1 = headB;
                while(p1!=p2) {
                    p1 = (p1!=null)?p1.next:p1;
                    p2 = (p2!=null)?p2.next:p2;
                }
            }
    
            //断开环
            tail.next = null;
    
            return p2;
        }
    }
    
  • 相关阅读:
    day 80 视图家族
    day 79 drf 多表关联操作
    day 78 drf 序列化
    day 77 drf中请求、渲染、解析、异常、响应模块的二次封装
    day 76 drf
    python小知识
    请求 渲染 解析 异常 响应模块
    子组件
    vue基础(2)
    vue基础
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13533709.html
Copyright © 2011-2022 走看看