题目描述
将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。
示例1
输入
{1},{2}
返回值
{1,2}
示例2
输入
{2},{1}
返回值
{1,2}
示例3
输入
{1,2},{1}
返回值
{1,1,2}
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
if(l1 == null){
return l2;
}
if(l2 == null){
return l1;
}
ListNode head = new ListNode(-1);
ListNode headTemp = head;
ListNode node1 = l1;
ListNode node2 = l2;
while(node1!=null && node2!=null){
//2个链表中含重复元素
if(node1.val <= node2.val){
head.next = node1;
head = node1;
node1 = node1.next;
}else if(node1.val > node2.val){
head.next = node2;
head = node2;
node2 = node2.next;
}
}
//链表1长度>链表2长度 链表2遍历完了
if(node1!=null){
head.next = node1;
}
//链表1长度<链表2长度 链表1遍历完了
if(node2!=null){
head.next = node2;
}
return headTemp.next;
}
}