zoukankan      html  css  js  c++  java
  • 合并两个有序链表---简单

    题目:

      将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    示例:

    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    思路:

      感冒加上鼻炎,又有点头晕,30分钟才做完。这道简单题其实就是分类讨论,还要注意保留头节点的指针保留可以返回。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            if(l1==nullptr) return l2;
            if(l2==nullptr) return l1;
            auto p=l1,q=l2;
            ListNode* head=l1;
            if(p->val>q->val)
            {
                auto t=p;
                p=q;
                q=t;
                head=l2;
            }
            ListNode* p_prev=nullptr;
            while(q){
            while(p!=nullptr&&(p->val<q->val))
            {
                p_prev=p;
                p=p->next;
            }
            if(p_prev)
            {
                p_prev->next=q;
                auto q_next=q->next;
                q->next=p;
                p_prev=p_prev->next;
                q=q_next;
            }
            else
            {
                p_prev=q;
                auto q_next=q->next;
                q->next=p;
                q=q_next;
                head=p_prev;
            }
            }
            return head;
        }
    };
  • 相关阅读:
    位图
    3. 资源管理(条款:13-17)
    70. Implement strStr() 与 KMP算法
    69. Letter Combinations of a Phone Number
    68. Longest Common Prefix
    67. Container With Most Water
    66. Regular Expression Matching
    65. Reverse Integer && Palindrome Number
    波浪理论
    MACD理解
  • 原文地址:https://www.cnblogs.com/manch1n/p/10330048.html
Copyright © 2011-2022 走看看