|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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分钟左右写出来的吧
|
|