题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
example:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
链表的表现形式为:
我们在java当中的表现形式为
public class ListNode {
private int val;
private ListNode next;
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
public ListNode(int val) {
this.val = val;
}
public ListNode() {
}
}
对于链表来说 当我们遍历链表的时候
可以看到是第一个链表的next属性指向第二个链表
因此 我们只需要改变next的指向即可
public static ListNode mergeTwoLists(ListNode listNode1,ListNode listNode2){
if (listNode1==null){
return listNode2;
}
if (listNode2==null){
return listNode1;
}
if (listNode1.val< listNode2.val){
listNode1.next=mergeTwoLists(listNode1.next,listNode2);
return listNode1;
}
else {
listNode2.next=mergeTwoLists(listNode1,listNode2.next);
return listNode2;
}
}
测试用例:
public static void main(String[] args) {
ListNode listNode3=new ListNode(3);
ListNode listNode2=new ListNode(2,listNode3);
ListNode listNode1=new ListNode(1,listNode2);
ListNode listNode6=new ListNode(3);
ListNode listNode5=new ListNode(2,listNode6);
ListNode listNode4=new ListNode(1,listNode5);
ListNode listNode = mergeTwoLists(listNode1, listNode4);
System.out.println(listNode);
}
Over