题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
常规题
实现
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if(pHead1 == NULL){
return pHead2;
}
if(pHead2 == NULL){
return pHead1;
}
ListNode* pHead3 = NULL;
ListNode* currNode1 = pHead1;
ListNode* currNode2 = pHead2;
ListNode* currNode3 = pHead3;
while((currNode1 != NULL) && (currNode2 != NULL)){
if(currNode1->val <= currNode2->val){
ListNode* tempNode = new ListNode(currNode1->val);
currNode1 = currNode1->next;
if(currNode3 == NULL){
pHead3 = tempNode;
currNode3 = tempNode;
}
currNode3->next = tempNode;
currNode3 = currNode3->next;
}
else{
ListNode* tempNode = new ListNode(currNode2->val);
currNode2 = currNode2->next;
if(currNode3 == NULL){
pHead3 = tempNode;
currNode3 = tempNode;
}
currNode3->next = tempNode;
currNode3 = currNode3->next;
}
}
if(currNode1 != NULL){
currNode3->next = currNode1;
}
if(currNode2 != NULL){
currNode3->next = currNode2;
}
return pHead3;
}
};
运行结果
运行时间:5ms
占用内存:468k