From fcbe62ad0dd6696495805a87e1ed0e60f7dc2e26 Mon Sep 17 00:00:00 2001 From: bilwa496 <66560100+bilwa496@users.noreply.github.com> Date: Sat, 29 Oct 2022 00:23:55 +0530 Subject: [PATCH] Created intersection-of-two-linked-lists.cpp intersection-of-two-linked-lists.cpp --- 160-intersection-of-two-linked-lists.cpp | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 160-intersection-of-two-linked-lists.cpp diff --git a/160-intersection-of-two-linked-lists.cpp b/160-intersection-of-two-linked-lists.cpp new file mode 100644 index 0000000..5252b66 --- /dev/null +++ b/160-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; + } +};