Java,LeetCode 21. 合并两个有序链表
程序员文章站
2022-04-19 13:23:40
链表合并两个有序链表1. 题目描述难易度:简单将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists2. 思路分析遍历两个链表,每次取到两个结点的值进行比较创建新...
链表
合并两个有序链表
1. 题目描述
难易度:简单
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
2. 思路分析
- 遍历两个链表,每次取到两个结点的值进行比较
- 创建新的节点,值为取到的两个结点中值较小的结点
- 将创建的结点加入到结果中
3. 代码演示
/**
* @Description: TODO
* @Author YunShuaiWei
* @Date 2020/7/5 19:43
* @Version
**/
public class Solution {
private ListNode res = null;
private ListNode cur = res;
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
}
if (l2 == null) {
return l1;
}
//利用两个临时变量node1和node2来遍历链表
ListNode node1 = l1;
ListNode node2 = l2;
while (node1 != null && node2 != null) {
//l1中val<l2中的val
if (node1.val < node2.val) {
//创建新的节点,并链接到res的next域
if (res == null) {
res = new ListNode(node1.val);
cur = res;
} else {
cur.next = new ListNode(node1.val);
cur = cur.next;
}
node1 = node1.next;
} else {
if (res == null) {
res = new ListNode(node2.val);
cur = res;
} else {
cur.next = new ListNode(node2.val);
cur = cur.next;
}
node2 = node2.next;
}
}
if (node1 == null) {
cur.next = node2;
} else {
cur.next = node1;
}
return res;
}
}
class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
本文地址:https://blog.csdn.net/qq_40613029/article/details/107144680