剑指Offer-第12天 双指针(简单)


第一题

题目链接:https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/

个人题解:创建一个虚拟头节点,遍历,如果碰到小的元素接上去即可。

代码:

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        auto dummy=new ListNode(-1),tail=dummy;
        while(l1 && l2){
            if(l1->valval){
                tail=tail->next=l1;
                l1=l1->next;
            }
            else{
                tail=tail->next=l2;
                l2=l2->next;
            }
        }
        if(l1) tail->next=l1;
        if(l2) tail->next=l2;

        return dummy->next;
    }
};

运行截图:

第二题

题目链接:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/

个人题解:遍历,所有走过的路程总和是一样的

代码:

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        auto a=headA,b=headB;
        while(a!=b)
        {
            if(!a) a=headB;
            else a=a->next;

            if(!b) b=headA;
            else b=b->next;
        }
        return a;
    }
};

运行截图:

相关