• Intersection of Two Linked Lists(LIST-2 POINTER)


    Write a program to find the node at which the intersection of two singly linked lists begins.


    For example, the following two linked lists:

    A:         a1 → a2
                             ↘
                                c1 → c2 → c3
                             ↗
    B: b1 → b2 → b3
    begin to intersect at node c1.


    Notes:

    If the two linked lists have no intersection at all, return null.
    The linked lists must retain their original structure after the function returns.
    You may assume there are no cycles anywhere in the entire linked structure.
    Your code should preferably run in O(n) time and use only O(1) memory.

    FIRST TRY

    /**
     * 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) {
            if(!headA || !headB) return NULL;
            int lenA = 0;
            int lenB = 0;
            ListNode* pA = headA;
            ListNode* pB = headB;
            while(pA->next)
            {
                lenA++;
                pA = pA->next; 
            }
            while(pB->next)
            {
                lenB++;
                pB = pB->next; 
            }
            if(pA == pB)
            {
                pA = headA;
                pB = headB;
                if(lenA > lenB)
                {
                    lenA -= lenB;
                    while(lenA-- > 0) pA = pA->next;
                }
                else if(lenA < lenB)
                {
                    lenB -= lenA;
                    while(lenB-- > 0) pB = pB->next;
                }
                while(pA!=pB)
                {
                    pA = pA->next;
                    pB = pB->next;
                }
                return pA;
            }
            else return NULL;
        }
    };

    Result: Accepted

  • 相关阅读:
    产品经理的十宗罪,你犯了几宗?
    产品经理的10大顾虑
    【FastAPI 学习 七】GET和POST请求参数接收以及验证
    【FastAPI 学习 六】异常处理
    【FastAPI 学习 五】统一响应json数据格式
    前端展示(三)
    前端展示(二)
    前端设计(一)
    后端流程分析
    生成词云图
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4229839.html
Copyright © 2020-2023  润新知