Java-21. 合并两个有序链表【力扣】

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

代码要求:

/** 
* Definition for singly-linked list. 
* * public class ListNode {
* *     int val;
* *     ListNode next; 
* *     ListNode(int x) { val = x; } 
* * }
* */

代码实现:

public class LinkedListTest{
    
    
 static class ListNode{
    
    
  int val;
  ListNode next;
  public ListNode(int val) {
    
    
   this.val=val;
  }
 }
 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    
    
  if(l1==null) {
    
    
   //链表l1为空时,直接返回链表l2
   return l2;
  }
  if(l2==null) {
    
    
   return l1;
  }
  ListNode newHead=new ListNode(-1);
  ListNode newTail=newHead;
  ListNode cur1=l1;
  ListNode cur2=l2;
  while(cur1!=null&&cur2!=null) {
    
    
   if(cur1.val<cur2.val) {
    
    
    newTail.next=new ListNode(cur1.val);
    newTail=newTail.next;
    cur1=cur1.next;
   }else {
    
    
     newTail.next=new ListNode(cur2.val);
                 newTail=newTail.next;
                 cur2=cur2.next;
   }
  }
  //此时cur1和cur2中有一个到链表结尾
  //把没有到末尾的链表剩下的元素直接插入到新链表的末尾节点
  if(cur1==null) {
    
    
   newTail.next=cur2;
  }
  if(cur2==null) {
    
    
   newTail.next=cur1;
  }
  return newTail.next;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44378053/article/details/105300946
今日推荐