zoukankan      html  css  js  c++  java
  • 【leetcode❤python】 160. Intersection of Two Linked Lists

    #-*- coding: UTF-8 -*-
    #两种方法
    #方法1:
    #计算出A和B两个链表的长度分别为m、n;
    #长度长的链表先走m-n步,之后再一次遍历寻找
    #方法2:
    #先走到一个链表的尾部,从尾部开始走;
    #跳到另一个链表的头部
    #如果相遇,则相遇点为重合节点
    class Solution(object):
        def getLinkLenth(self,head):
            lenth=0
            while head!=None:
                lenth+=1
                head=head.next
            return lenth
            
        def getIntersectionNode(self, headA, headB):
            """
            :type head1, head1: ListNode
            :rtype: ListNode
            """
            # if headA==None or headB==None:return None
            dummyA=ListNode(0)
            dummyA.next=headA
            dummyB=ListNode(0)
            dummyB.next=headB
            lenA=self.getLinkLenth(headA)
            lenB=self.getLinkLenth(headB)
        
            if lenA>lenB:
                xlen=lenA-lenB
                for i in xrange(xlen):
                    dummyA=dummyA.next
                    
            if lenB>lenA:
               
                xlen=lenB-lenA
                
                for i in xrange(xlen):
                    
                    dummyB=dummyB.next
           
            while dummyB.next and dummyA.next:
                
                if dummyB.next==dummyA.next:
                    return dummyA.next
                dummyB=dummyB.next
                dummyA=dummyA.next
            
            return None


    # listA=[]
            listB=[]
            if headA==None or headB==None:return None
            while headA:
                listA.append(headA.val)
                headA=headA.next
            while headB:
                listB.append(headB.val)
                headB=headB.next
            
            minlen=len(listA) if len(listA)<len(listB) else len(listB)
            print listA,listB,minlen
            
            if listA[-1]!=listB[-1]:return None
            
            for i in xrange(1,minlen+1):
                print i
                if listA[-i]!=listB[-i]:
                   
                    return ListNode(listA[-i+1])
                if i==minlen:
                   
                    return ListNode(listA[-i])

  • 相关阅读:
    NetCore使用Log4Net记录日志
    WCF数据协议中XmlArrayItem标签不起作用的问题
    WTM Blazor,Blazor开发利器
    WTM5.0发布,全面支持.net5
    log4netdemo
    mes 入库单号 锁表方案
    线程基础篇-线程同步
    线程基础篇-线程和进程
    EF基础篇-Code First
    EF基础篇-DB First
  • 原文地址:https://www.cnblogs.com/kwangeline/p/6059566.html
Copyright © 2011-2022 走看看