LeetCode—160 相交链表 Cpp&Python

LeetCode—160 相交链表 Cpp&Python

编写一个程序,找到两个单链表相交的起始节点。

一、方法与思路

双指针法:创建两个指针cur1和cur2分别为headA和headB的头节点,然后让他们进行遍历,
当cur1遍历完成后则重定位于headB的头节点,
当cur2遍历完成后则重定位于headA的头节点。
若在某一时刻相交则为相交节点

二、C++代码

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {

        if(!headA||!headB){return NULL;}

        ListNode *cur1 = headA;
        ListNode *cur2 = headB;
        while(cur1!=cur2)
        {
        cur1 = cur1 ? cur1->next : headB;
        cur2 = cur2 ? cur2->next : headA;
        }
        return cur1;
    }
};

三、Python代码

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
        if not headA or not headB:
            return None
        nodeA = headA
        nodeB = headB
        while(nodeA !=nodeB):
            nodeA = nodeA.next if nodeA else headB
            nodeB = nodeB.next if nodeB else headA
        return nodeA


其他方法待补充

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页