将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
例:
输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
public class title21 {public static void main(String[] args) {int[] l1={1,2,4};int[] l2={1,3,4};ListNode list1=createList(l1);ListNode list2=createList(l2);printList(list1);printList(list2);ListNode list3=mergeTwoLists(list1,list2);printList(list3);}//1.创建链表public static ListNode createList(int[] nums){ListNode head=new ListNode(); //头节点ListNode preNode = head;for(int i=0;i<nums.length;i++){ListNode node=new ListNode(nums[i]); //创建一个新结点preNode.next=node;preNode=node;}return head;}//2.遍历链表public static ListNode printList(ListNode head) {ListNode node = head.next; //从头节点的下一节点开始遍历while (node != null) {System.out.print(node.val + "\t");node = node.next;}System.out.println();return head;}//3.合并两个升序链表public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode node=new ListNode(-1);ListNode preNode=node;while (list1 != null && list2 !=null ){if(list1.val<list2.val){preNode.next=list1;list1=list1.next;}else {preNode.next=list2;list2=list2.next;}preNode=preNode.next;}if(list1==null){preNode.next=list2;}if(list2==null){preNode.next=list1;}return node.next;}
}