问题描述:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
运行截图
完整代码
/**
* 2 * @Author: LJJ
* 3 * @Date: 2023/7/17 9:02
* 4
*/
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
public class MergeTwoSortedLists {
public static ListNode mergeTwoLists(ListNode l1,ListNode l2){
ListNode dummy = new ListNode(0);// 创建一个虚拟头节点
ListNode cur = dummy; //当前节点指针
while(l1!=null && l2!=null){
if (l1.val<=l2.val){
cur.next = l1; //将l1链接到cur的下一个节点
l1 = l1.next; // l1指针向后移一步
}else {
cur.next = l2; //将l2链接到cur的下一个节点
l2 = l2.next;
}
cur = cur.next;
}
// 将未遍历完的链表连接到cur的下一个节点
cur.next = (l1 != null) ? l1 : l2;
return dummy.next;
}
public static void main(String[] args) {
// 创建链表1:1 -> 2 -> 4
ListNode l1 = new ListNode(1);
l1.next = new ListNode(2);
l1.next.next = new ListNode(4);
// 创建链表2:1 -> 3 -> 4
ListNode l2 = new ListNode(1);
l2.next = new ListNode(3);
l2.next.next = new ListNode(4);
// 合并两个链表
ListNode mergedList = mergeTwoLists(l1, l2);
// 输出合并后的链表
while (mergedList != null) {
System.out.print(mergedList.val + " -> ");
mergedList = mergedList.next;
}
System.out.println("null");
}
}
复制即用,需要代码文档,算法解析的私得
算法思路:代码文档,算法解析的私得