标签:直接 problem nbsp efi 简单 难度 sts str code
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = [] 输出:[]
示例 3:
输入:l1 = [], l2 = [0] 输出:[0]
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* preHead = new ListNode(-1); ListNode* prev = preHead; while (l1 != nullptr && l2 != nullptr) { if (l1->val < l2->val) { prev->next = l1; l1 = l1->next; } else { prev->next = l2; l2 = l2->next; } prev = prev->next; } // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可 prev->next = l1 == nullptr ? l2 : l1; return preHead->next; } }; /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==nullptr){ return l2; }else if(l2==nullptr){ return l1; } ListNode *pre=new ListNode(-1); ListNode *tmp=pre; while(l1!=nullptr&&l2!=nullptr){ if (l1->val<l2->val){ tmp->next=l1; l1=l1->next; }else{ tmp->next=l2; l2=l2->next; } tmp=tmp->next; } tmp->next=l1==nullptr?l2:l1; return pre->next; } }; 1,三目表达式 x < 0 ? y = 10 : z = 20; 这个语句被称为条件表达式,它由 3 个子表达式组成,使用问号 ? 和冒号 : 分隔。这 3 个表达式分别是:x<0,y = 10 和 z = 20。 上面的条件表达式与以下 if-else 语句执行相同的操作: if (x < 0) y = 10; else z = 20; 2,类和空间的使用 3,指针的使用
标签:直接 problem nbsp efi 简单 难度 sts str code
原文地址:https://www.cnblogs.com/kai-xuan/p/14746257.html