题目:
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.
题意:
将两个已经排好序的链表进行合并。
题解:
此题已经有变种了,而且不用考虑合并之后的链表去掉重复的,只要求合并就好了。但是因为我在用ListNode合并的时候,每次都是只能指向最后一个,后来发现,实际上我得注意,我在一开始就得先初始化一个节点,然后就是一次去比较。
public class ListNode
{
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class Solution
{
public static ListNode mergeTwoLists(ListNode l1,ListNode l2)
{
ListNode node,list;
ListNode head = null;
if(l1 == null && l2 == null)
{
return null;
}
else if(l1 == null && l2 != null)
return l2;
else if(l1 != null && l2 == null)
return l1;
else
{
if(l1.val <= l2.val)
{
node = l1;
head = node; //这里先定义一个head,然后就是将我要循环的下一个节点赋给这个head节点,然后让这个node去做比较和合并,而这个head在内存中我始终都是指向那一块空间的。
l1 = l1.next;
}
else
{
node = l2;
head = node;
l2 = l2.next;
}
while(l1 != null && l2 != null)
{
if(l1.val <= l2.val)
{
node.next = l1;
node = node.next;
l1 = l1.next;
}
else
{
node.next = l2;
node = node.next;
l2 = l2.next;
}
}
if(l1 == null && l2 != null)
{
while(l2 != null)
{
node.next = l2;
node = node.next;
l2 = l2.next;
}
}
else if(l1 != null && l2 == null)
{
while(l1 != null)
{
node.next = l1;
node = node.next;
l1 = l1.next;
}
//node.next = l1;
}
//while(node != null)
//{
//System.out.print(node.val + " ");
//node = node.next;
//}
return head;
}
}
}