160. 相交链表

题目

python

题解:双指针

  • 思路:计算两条链表的长度,找到长度差,让长的链表多走差的值,返回第一个相等的元素
class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        count1,count2=0,0
        pa=headA
        pb=headB
        while headA:# 计算链表 A 的长度
            headA=headA.next
            count1+=1
        while headB:# 计算链表 B 的长度
            headB=headB.next
            count2+=1
        if count1>count2:
            count=count1-count2# 计算长度差
            #让A链先走count步
            while count!=0:
                pa=pa.next
                count-=1
        elif count1<count2:
            count=count2-count1# 计算长度差
            #让B链先走count步
            while count!=0:
                pb=pb.next
                count-=1
        while pa and pb:# 同时遍历链表 A 和链表 B,找到第一个相等的节点
            if pa==pb:
                return pa
            pa=pa.next
            pb=pb.next
        return None# 如果没有交点,返回 None      

javascript

题解:双指针

var getIntersectionNode = function(headA, headB) {
    if(headA === null || headB === null){
        return null
    }
    let pA = headA, pB = headB
    while(pA!==pB){
        pA = pA === null?headB:pA.next
        pB = pB ===null?headA:pB.next
    }
    return pA
};
posted @   Frommoon  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示