题目如下:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入: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;
}
}