Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Subscribe to see which companies asked this question.
1.边界情况:不需考虑
2.思路:链表可以将头部初始化,使用链表直接赋值过去不需要申请链表对象。
ListNode* rel = new ListNode(0);
ListNode* r_h = rel;
这种思路比较好
3.存有疑问:题目只说了sorted没有说是大小顺序。。。是我没理解好么。。
/**
* 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) {
ListNode* rel = new ListNode(0);
ListNode* r_h = rel;
while(l1 != NULL || l2 != NULL)
{
if (l1 == NULL)
{
rel -> next = l2;
break;
}
if(l2 == NULL)
{
rel -> next= l1;
break;
}
if(l2 -> val > l1 -> val)
{
rel -> next = l1;
rel = rel -> next;
l1 = l1 -> next;
}
else
{
rel -> next = l2;
rel = rel -> next;
l2 = l2 -> next;
}
}
return r_h->next;
}
};/**
* 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) {
ListNode* rel = new ListNode(0);
ListNode* r_h = rel;
while(l1 != NULL || l2 != NULL)
{
if (l1 == NULL)
{
rel -> next = l2;
break;
}
if(l2 == NULL)
{
rel -> next= l1;
break;
}
if(l2 -> val > l1 -> val)
{
rel -> next = l1;
rel = rel -> next;
l1 = l1 -> next;
}
else
{
rel -> next = l2;
rel = rel -> next;
l2 = l2 -> next;
}
}
return r_h->next;
}
};