Problem:
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.
Solution:
两个有序链表,每次取头部最小的那个元素,然后将这个元素从原来链表中去掉,依次循环
题目大意:
给定两个有序链表,要求将链表合并为一个有序链表,并且不能使用额外的空间
Java源代码(344ms):
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head,p; if(l1==null)return l2; if(l2==null)return l1; if(l1.val > l2.val){ p=l2;l2=l2.next; }else{ p=l1;l1=l1.next; } head=p; while(l1!=null && l2!=null){ if(l1.val > l2.val){ p.next=l2;l2=l2.next; }else{ p.next=l1;l1=l1.next; } p=p.next; } if(l1==null)p.next=l2; else p.next=l1; return head; } }
C语言源代码(3ms):
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { struct ListNode *head,*p; if(l1==NULL)return l2; if(l2==NULL)return l1; if(l1->val > l2->val){ p=l2; l2=l2->next; }else{ p=l1; l1=l1->next; } head=p; while(l1!=NULL && l2!=NULL){ if(l1->val > l2->val){ p->next=l2; l2=l2->next; }else{ p->next=l1; l1=l1->next; } p=p->next; } if(l1==NULL)p->next=l2; else p->next=l1; return head; }
C++源代码(13ms):
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head,*p; if(l1==NULL)return l2; if(l2==NULL)return l1; if(l1->val > l2->val){ p=l2;l2=l2->next; }else{ p=l1;l1=l1->next; } head=p; while(l1!=NULL && l2!=NULL){ if(l1->val > l2->val){ p->next=l2;l2=l2->next; }else{ p->next=l1;l1=l1->next; } p=p->next; } if(l1==NULL)p->next=l2; else p->next=l1; return head; } };
Python源代码(67ms):
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param {ListNode} l1 # @param {ListNode} l2 # @return {ListNode} def mergeTwoLists(self, l1, l2): if l1==None:return l2 if l2==None:return l1 p=l1 if l1.val > l2.val: p=l2;l2=l2.next else:p=l1;l1=l1.next head=p while l1!=None and l2!=None: if l1.val > l2.val: p.next=l2;l2=l2.next else:p.next=l1;l1=l1.next p=p.next if l1==None:p.next=l2 else:p.next=l1 return head
时间: 2024-10-12 13:05:17