双指针法,若两个链表没有交点,则会同时指向NULL

    1. /**
    2. * Definition for singly-linked list.
    3. * struct ListNode {
    4. * int val;
    5. * ListNode *next;
    6. * ListNode(int x) : val(x), next(NULL) {}
    7. * };
    8. */
    9. class Solution {
    10. public:
    11. ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
    12. ListNode *p1=headA, *p2=headB;
    13. while(p1!=p2) {
    14. if (p1==NULL) {
    15. p1=headB;
    16. }else {
    17. p1=p1->next;
    18. }
    19. if (p2==NULL) {
    20. p2=headA;
    21. }else {
    22. p2=p2->next;
    23. }
    24. }
    25. return p1;
    26. }
    27. };

    leedcode通过:

    1. 执行用时:28 ms, 在所有 C++ 提交中击败了99.61% 的用户
    2. 内存消耗:14.2 MB, 在所有 C++ 提交中击败了65.07% 的用户