LeetCode 21 Merge Two Sorted Lists
题目描述:
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.
翻译:
将两个已经排好序的链表连接起来,将新链表排序后返回,新链表必须包括两个链表的所有结点
这题是easy,思路很好就能想出来,刚开始也想重构sort函数,然后直接使用以为就排完了,但在class里没法调用到,不知道该怎么弄。。然后就正常思路解,但因为是动态内存分配,总是掌握不好分配的技巧,一直报RunTime问题,但又感觉自己的思路没有问题,至今也没太想明白,那就按照一个标准来学习学习了。
这是两个链表合并的问题,也就是说一定要有两个链表指针,一个指向开始的位置,另一个用来进行遍历操作。
目前为止发现的问题就在这里了,就是要把最开始申请的头指针给它分配一个内存空间,让它成为实体,再用其的next作为遍历操作的起点,恩,目前就只能这么理解了。
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL && l2 == NULL) return NULL;
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
ListNode* head;
ListNode h1(INT_MIN);
head = &h1;
while(l1&&l2){
if(l1->val < l2->val){
head->next = l1;
l1 = l1 -> next;
}else{
head->next = l2;
l2 = l2 -> next;
}
head = head->next;
}
if(l1 == NULL){
head -> next = l2;
}else{
head -> next = l1;
}
return h1.next;
}
};
以后就用博客来记录自己的学习了,实在是太菜了,希望自己能够迅速成长起来吧!