马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
21. Merge Two Sorted Lists #Easy
Merge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists.
Example 1:
Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]
Example 2:
Input: l1 = [], l2 = []
Output: []
Example 3:
Input: l1 = [], l2 = [0]
Output: [0]
Constraints:
The number of nodes in both lists is in the range [0, 50].
-100 <= Node.val <= 100
Both l1 and l2 are sorted in non-decreasing order.
C/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if (l1 == NULL) {
return l2;
}
if (l2 == NULL) {
return l1;
}
struct ListNode* returnNode = malloc(sizeof(struct ListNode));
if (l2->val < l1->val) {
returnNode->val = l2->val;
l2 = l2->next;
returnNode->next = NULL;
} else {
returnNode->val = l1->val;
l1 = l1->next;
returnNode->next = NULL;
}
struct ListNode* curNode = returnNode;
while (1) {
if (l1 == NULL) {
curNode->next = l2;
break;
} else if (l2 == NULL) {
curNode->next = l1;
break;
} else {
struct ListNode *newNode = malloc(sizeof(struct ListNode));
if (l2->val < l1->val) {
newNode->val = l2->val;
l2 = l2->next;
newNode->next = NULL;
curNode->next = newNode;
curNode = newNode;
} else {
newNode->val = l1->val;
l1 = l1->next;
newNode->next = NULL;
curNode->next = newNode;
curNode = newNode;
}
}
}
return returnNode;
}
20分钟左右写出来的吧
|