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])

  • 相关阅读:
    [原]【实例化需求】1.FitNesse工具应用简介
    [原][问题解决]常见问题的5种解决办法(由Jenkins问题解决谈起)
    [原][自动化测试]Robot Framework Selenium基本使用
    [原]好玩的Linux,关于时间cal命令
    [原][问题解决]Romote Control 图形化界面显示问题解决办法
    【SBE】由需求管理谈起
    [Robot]关于robot的几个学习网站
    coolite中在UserControl中使用Coolite.AjaxMethods方法
    javascript实现页面加载进度条(转)
    coolite 在前台更新Window中控件的值
  • 原文地址:https://www.cnblogs.com/kwangeline/p/6059566.html
Copyright © 2011-2022 走看看