From dea53362803431f0876bd3268ca4744ba33e69ac Mon Sep 17 00:00:00 2001 From: yugantar99 <73051921+yugantar99@users.noreply.github.com> Date: Sun, 16 Oct 2022 19:55:16 +0530 Subject: [PATCH] Created intersection-of-two-linked-lists.cpp Given the heads of two singly linked-lists headA and headB, return the node at which the two lists intersect. --- intersection-of-two-linked-lists.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 intersection-of-two-linked-lists.cpp diff --git a/intersection-of-two-linked-lists.cpp b/intersection-of-two-linked-lists.cpp new file mode 100644 index 0000000..5252b66 --- /dev/null +++ b/intersection-of-two-linked-lists.cpp @@ -0,0 +1,26 @@ +// Given the heads of two singly linked-lists headA and headB, return the node at which the two lists intersect. +// If the two linked lists have no intersection at all, return null. + +// Time: O(m + n) +// Space: O(1) + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ + +class Solution { +public: + ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { + ListNode *curA = headA, *curB = headB; + while (curA != curB) { + curA = curA ? curA->next : headB; + curB = curB ? curB->next : headA; + } + return curA; + } +};