23.面试题02.07链表相交

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode ap=headA;
        ListNode bp=headB;
        int lenA=0,lenB=0;//求两个链表长度
        while(ap!=null){
            ap=ap.next;
            lenA++;
        }
        while(bp!=null){
            bp=bp.next;
            lenB++;
        }
        ap=headA;
        bp=headB;
        int len=0;//用来计算让两个链表长度相同后的长度
        //让两个链表长度相同
        if(lenA<lenB){
            len=lenA;
            for(int i=0;i<lenB-lenA;i++){
                bp=bp.next;
            }
        }
        else{
            len=lenB;
            for(int i=0;i<lenA-lenB;i++){
                ap=ap.next;
            }
        }
        int count=0;
        for(int i=0;i<len;i++){
            if(ap==bp){
                return ap;
            }
            else{
                ap=ap.next;
                bp=bp.next;
            }
            count++;
        }
        return null;
    }
}
class Solution(object):
    def getIntersectionNode(self, headA, headB):
        ap=headA
        bp=headB
        lenA=0
        lenB=0
        len=0
        count=0
        while ap:
            ap=ap.next
            lenA+=1
        while bp:
            bp=bp.next
            lenB+=1
        ap=headA
        bp=headB
        if lenA<lenB:
            len=lenA
            for i in range(lenB-lenA):
                bp=bp.next
        else:
            len=lenB
            for i in range(lenA-lenB):
                ap=ap.next
        for i in range(len):
            if ap==bp:
                return ap
            else:
                ap=ap.next
                bp=bp.next
            count+=1
        return None

其它方法:

代码随想录 (programmercarl.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值