题目如下:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
自己的算法及代码:
- 创建一个新的链表 l3,用于存放合并之后的链表数据;
- 如果 l1、l2 都不为空,则比较元素大小,将小的先放入 l3;
- 如果 l1为空,则将 l2 元素依次放入 l3;如果 l2为空,则将 l1 元素依次放入 l3;
- 最后返回 l3,(这里我本来代码是 return l3,然后发现返回值多了一个0,就将返回改为了 return l3.next );
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode l3 = new ListNode();
ListNode a = l1;
ListNode b = l2;
ListNode c = l3;
while (a != null && b != null){
if (a.val <= b.val){
c.next = a;
c = a;
a = a.next;
}else {
c.next = b;
c = b;
b = b.next;
}
}
while (a == null && b != null){
c.next = b;
c = b;
b = b.next;
}
while (a != null && b == null){
c.next = a;
c = a;
a = a.next;
}
return l3.next;
}
}
链表结构定义如下:
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;
}
}
这篇博客介绍了一种合并两个已排序链表的方法,通过创建新的链表l3,比较l1和l2中节点的值,将较小的节点添加到l3中,直到其中一个链表为空。最后将非空链表的剩余部分追加到l3。代码实现中,使用了while循环和条件判断确保所有节点都被正确地合并。
734

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



