随手点进去forum, 看了两个答案,差不多的,都是一边merge value一边new ListNode。。。 难道不看题么?
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.
这种看都不仔细看就做然后报告说自己做好了的行为基本上实际工作中最坑team的了。。。
class Solution {
public:
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
if (!l1){
return l2;
}
if (!l2){
return l1;
}
ListNode* result = NULL;
bool flag = true;//true for l1 turn, false for l2 turn.
ListNode* pre = NULL;
if (l1->val <= l2->val){
flag = true;
result = l1;
pre = l1;
}
else{
flag = false;
result = l2;
pre = l2;
}
while (l1 && l2){
if (flag){
while (l1 && l1->val <= l2->val){
pre = l1;
l1 = l1->next;
}
if (!l1){
break;
}
flag = false;
pre->next = l2;
pre = l2;
l2 = l2->next;
}
else{
while (l2 && l2->val <= l1->val){
pre = l2;
l2 = l2->next;
}
if (!l2){
break;
}
flag = true;
pre->next = l1;
pre = l1;
l1 = l1->next;
}
}
while (l1){
pre->next = l1;
pre = l1;
l1 = l1->next;
}
while (l2){
pre->next = l2;
pre = l2;
l2 = l2->next;
}
return result;
}
};