• 160. 相交链表


    题目:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/

    自己的方法:暴力方法:

    public class Solution {
        public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            ListNode tempb=new ListNode(-999);
            while( headA!=null)
            {
                ListNode tempa=headA;
                for(tempb=headB;tempb!=null;tempb=tempb.next)
                {
                    if(tempb==tempa)
                    {
                        return tempb;
                    }
                }
    
                headA=headA.next;
            }
            return null;
        }
    }

    其它方法:

    解一:

    计算两个链表各自长度,长度之差为 diff
    让较长链表先走 diff 步
    长短链表再同步往前走,在第一个相同节点停下
    如果走完了链表没有相遇,说明两个链表不相交

    class Solution:
        def getIntersectionNode(self, L1: ListNode, L2: ListNode) -> ListNode:
    
            def length(L):
                n = 0
                while L:
                    n += 1; L = L.next
                return n 
            
            len1, len2 = length(L1), length(L2)
            if len1 > len2:
                L1, L2 = L2, L1
            for _ in range(abs(len1 - len2)):
                L2 = L2.next
            while L1 and L2 and L1 is not L2:
                L1, L2 = L1.next, L2.next
            return L1

    解二:

    • 长短链表相互拼接,遇到相同节点跳出循环,该节点即为相交节点
    class Solution:
        def getIntersectionNode(self, L1: ListNode, L2: ListNode) -> ListNode:
            h1, h2 = L1, L2
            while h1 is not h2:
                h1 = h1.next if h1 else L2
                h2 = h2.next if h2 else L1
            return h1
  • 相关阅读:
    Error Boundaries 错误边界
    判断机型
    iframe
    C#中静态方法和非静态方法的区别
    C#制作ActiveX控件中调用海康SDK的问题
    C# 程序集
    web deploy 部署网站
    C# 提取PPT文本和图片的实现方案
    C#调用webservice
    C#中四步轻松使用log4net记录本地日志
  • 原文地址:https://www.cnblogs.com/William-xh/p/13637215.html
Copyright © 2020-2023  润新知