public class leecode021 {
/***
* 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
*
* 示例 1:
*
* 输入:l1 = [1,2,4], l2 = [1,3,4]
* 输出:[1,1,2,3,4,4]
* 示例 2:
*
* 输入:l1 = [], l2 = []
* 输出:[]
* 示例 3:
*
* 输入:l1 = [], l2 = [0]
* 输出:[0]
*
* 提示:
*
* 两个链表的节点数目范围是 [0, 50]
* -100 <= Node.val <= 100
* l1 和 l2 均按 非递减顺序 排列
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
public static ListNode MergeTwoLists(ListNode l1, ListNode l2) {
ListNode target = new ListNode(0);
ListNode head = target; //浅复制
while (l1 != null && l2 != null){
if (l1.val<l2.val){
head.next = new ListNode(l1.val);
//System.out.println(l1);
l1 = l1.next;
//System.out.println(l1);
}else {
head.next = new ListNode(l2.val);
l2 = l2.next;
}
head = head.next;
}
if (l1 != null) head.next = l1;
if (l2 != null) head.next = l2;
return target.next;
}
public static void main(String[] args) {
ListNode l1 = new ListNode(1);
l1.next = new ListNode(2);
l1.next.next = new ListNode(4);
ListNode l2 = new ListNode(1);
l2.next = new ListNode(3);
l2.next.next= new ListNode(4);
System.out.println(MergeTwoLists(l1,l2));
}
}
需要用到ListNode对象,属性为val、next,重写构造方法、tostring方法
package com.utilClass;
/**
* @Author:
* @Date: 2021/11/16/14:52
* @Description:链表的节点
**/
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
public ListNode(int val) {
this.val = val;
}
// @Override
// public String toString() {
// return "ListNode{" +
// "val=" + val +
// ", next=" + next +
// '}';
// }
@Override
public String toString(){
ListNode head = this;
StringBuffer stringBuffer = new StringBuffer();
while (head != null){
stringBuffer.append(head.val + "");
head = head.next;
}
return stringBuffer.toString();
}
}

整体的算法描述
如果l1和l2都不为空,呢么l1,l2此时指向的都是第一个节点,一次进行比较,将较小的数值放入到,新的链表target中,将取出的l1或者l2向后移动,当其中的一个链表取空之后,可以直接将身下的链表直接apped到target后面
该博客主要介绍了如何使用Java实现合并两个已排序的链表。算法首先创建一个新的链表target,然后比较l1和l2中节点的值,将较小的节点添加到target中,直到其中一个链表为空。最后,将未空的链表直接附加到target。整个过程确保了合并后的链表依然有序。

1549

被折叠的 条评论
为什么被折叠?



