目录
一、题目
- 一、题目
- 二、迭代方式实现的思路
- 三、题目代码解析(迭代方式实现)
- 四、递归实现的思路
- 五、题目代码解析(递归方式实现)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 提示:两个链表的节点数目范围是 [0, 50]
示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
示例 2: 输入:l1 = [], l2 = [] 输出:[]
示例 3: 输入:l1 = [], l2 = [0] 输出:[0]
二、迭代方式实现的思路- 当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。
1、创建一个链表类
public class ListNode {
public int val;//值
public ListNode next;//指向下一个节点
public ListNode(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
@Override
public String toString() {
return "ListNode{" +
"val=" + val +
'}';
}
}
2、题解代码
public class Test {
public static void main(String[] args) {
//创建l1链表
ListNode l1=new ListNode(1);
ListNode node2=new ListNode(2);
ListNode node3=new ListNode(4);
l1.next=node2;
node2.next=node3;
//创建l2链表
ListNode l2=new ListNode(1);
ListNode node4=new ListNode(3);
ListNode node5=new ListNode(4);
l2.next=node4;
node4.next=node5;
//迭代方式合并两个有序链表
ListNode listNode=mergeTwoList(l1,l2);
//遍历输出链表节点
while (listNode != null) {
System.out.println(listNode.getVal());
listNode = listNode.getNext();
}
}
/**
* 迭代方式实现
*/
public static ListNode mergeTwoList(ListNode l1, ListNode l2) {
ListNode prehead = new ListNode(-1);
ListNode prev = prehead;//维护一个 prev 指针,即头指针
while (l1 != null && l2 != null) {//l1或者l2都不为null
if (l1.val
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?