合并两个有序链表
先来看一下题目
比较简单的暴力想法就是遍历两个链表然后每个元素去比较,较小的就存到新的链表中。思路比较简单但是比较难的是链表该怎么去书写
话不多说直接上代码。
// C++;
//
class Solution{
public ListNode* mergeTwoLists(ListNode *list,ListNode* list2){
if(list1 == nullptr){
return list2; //如果其中一个链表为空,直接返回另一个链表
}
if(list2 == nullptr){
return list1;
}
ListNode* node = new ListNode();
ListNode* temp = node;
while(list1 != nullptr && list2 != nullptr){
if(list2->val >= list1->val){
temp->next = list1;
list1 = list1->next;
}
else if(list2->val < list1->val)
{
temp->next = list2;
list2 = list2->next;
}
temp=temp->next;//node后移一位,指向尾节点
if(list1 == nullptr){
//当某条链表结束了,就让node->next指向另一条链表的剩余
temp->next = list2;
return node->next;
}
if(list2 == nullptr){
temp->next = list1;
return node->next;
}
}
return node.next;
}
}
最后提交通过
这个题目逻辑简单但比较考验对链表的使用。