Q:
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.
Analysis:
题目简单,合并两个已排序的链表。需要注意的是,若有相同的元素,并没说要删除,需要“一次链接两个相同元素”。
Code:
/**
* 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) {
if (l1 == null) {
return l2;
}
if (l2 == null) {
return l1;
}
ListNode result = new ListNode(0);
ListNode h=result;//指向链表的头节点不变
while (l1 != null && l2 != null) {
if(l1.val<l2.val){
result.next=l1;
l1=l1.next;
}else{
result.next=l2;
l2=l2.next;
}
result=result.next;
}
//判断链表长度不相同时候的剩余部分,将剩余部分连接到最终的链表中
if(l1!=null){
result.next=l1;
}else if(l2!=null){
result.next=l2;
}
return h.next;
}
}