题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
Java AC代码:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode list = new ListNode(0);
ListNode cur = list;
if ( list1 == null){
return list2;
}
if (list2 == null){
return list1;
}
while(list1 != null & list2 != null){
if ( list1.val <= list2.val){
list.next = list1;
list = list.next;
list1 = list1.next;
}else{
list.next = list2;
list = list.next;
list2 = list2.next;
}
}
while(list1 != null){
list.next = list1;
list = list.next;
list1 = list1.next;
}
while(list2 != null){
list.next = list2;
list = list.next;
list2 = list2.next;
}
list.next = null;
cur = cur.next;
return cur;
}
}
C++ AC代码
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2){
ListNode* head = new ListNode(0);
ListNode* tmp = head;
ListNode* p1 = pHead1, *p2 = pHead2;
while(p1 && p2){
ListNode* p;
if(p1->val <= p2->val){
p = new ListNode(p1->val);
p1 = p1->next;
}else{
p = new ListNode(p2->val);
p2 = p2->next;
}
tmp->next = p;
tmp = tmp->next;
}
if(p1){
tmp->next = p1;
}
if(p2){
tmp->next = p2;
}
head = head->next;
return head;
}
};