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; + } +};