合并两个有序链表---java

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

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode l1 = list1;
        ListNode l2 = list2;    //两个指针指原列表,指向比较的节点
        ListNode pre1 = new ListNode(-1);   //构建新指针
        ListNode pre2 = pre1;   //指向新连表的下一节点
        while(l1!=null&&l2!=null){  //判断两个没到头
            if(l1.val<l2.val){  //比较数值
                pre2.next = l1; //将新链表连接向节点小的连表
                l1 = l1.next;   //更新节点指针
            }else{
                pre2.next = l2;
                l2 = l2.next;
            }
            pre2 = pre2.next;   //更新新连表指针
        }
        if(l1==null){       //判断两个连表是否到头
            pre2.next = l2; //到头直接把新节点的指针指向剩余的节点
        }
        if(l2==null){
            pre2.next = l1;
        }
        return pre1.next;
    }
}
posted @ 2022-04-11 22:06  网抑云黑胶SVIP用户  阅读(69)  评论(0编辑  收藏  举报