2022年11月4日 星期五

[23] Merge k Sorted Lists(TBD)

好吧就把今日命名為湊題數之日好了.....
湊著湊著湊了一個hard , 而我懶得再去看更多解法了(被歐飛)
簡單說就是先把mergeTwoLists 再寫一遍然後拿來用QQ
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
if (list1== NULL)
return list2;
if (list2==NULL)
return list1;
struct ListNode *p1,*p2, *head,*now;
p1=list1;
p2=list2;
if (p1->val < p2->val )
{
head = p1;
p1=p1->next;
}
else
{
head = p2;
p2=p2->next;
}
now = head;
while (p1!=NULL && p2!=NULL)
{
if (p1->val < p2->val )
{
now->next = p1;
p1=p1->next;
}
else
{
now->next = p2;
p2=p2->next;
}
now=now->next;
}
if (p1==NULL)
now->next =p2;
else
now->next = p1;
return head;
}
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize){
if (listsSize==1)
return lists[0];
struct ListNode* new = NULL;
for (int i=0;i<listsSize-1;i++)
{
new = mergeTwoLists(lists[i],lists[i+1]);
lists[i+1]=new;
}
return new;
}

沒有留言:

張貼留言