您的位置:首页 > 其它

[leetcode]21. Merge Two Sorted Lists

2016-10-19 20:39 429 查看
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.

直接上代码了。

java

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public 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 cur=null,head=null;
ListNode node1=l1,node2=l2;
while(node1!=null&&node2!=null)
{
if(node1.val<node2.val)
{
if(cur==null)
{
cur=node1;
}
else
{
cur.next=node1;
cur=node1;
}
node1=node1.next;
}
else
{
if(cur==null)
{
cur=node2;
}
else
{
cur.next=node2;
cur=node2;
}
node2=node2.next;
}

}
while(node1!=null)
{
cur.next=node1;
cur=node1;
node1=node1.next;
}
while(node2!=null)
{
cur.next=node2;
cur=node2;
node2=node2.next;
}
if(l1.val<l2.val)
{
return l1;
}
else
{
return l2;
}

}
}

golang

/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
if l1 == nil && l2 == nil{
return nil
}
if l1==nil{
return l2
}
if l2 == nil{
return l1;
}
var head,cur *ListNode
for l1!=nil&&l2!=nil{
if l1.Val<l2.Val{
if head == nil{
head = l1
cur = l1
}else{
cur.Next = l1
cur=cur.Next
}
l1=l1.Next
}else{
if head == nil{
head = l2
cur = l2
}else{
cur.Next = l2
cur=cur.Next
}
l2=l2.Next
}
}
if l1!=nil{
cur.Next=l1
}
if l2!=nil{
cur.Next=l2
}
return head
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: