将两个升序链表合并为一个新的升序链表并返回(Java)
时间: 2024-11-03 12:19:09 浏览: 10
java-leetcode题解之第148题排序链表.zip
在Java中,将两个升序链表合并成一个新的升序链表可以采用迭代或递归的方式实现。这里提供一个迭代的解决方案:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode mergeTwoSortedLists(ListNode l1, ListNode l2) {
// 创建新的头节点
ListNode dummyHead = new ListNode(0);
ListNode tail = dummyHead;
// 遍历两个链表,选择较小的值添加到新链表中
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
tail.next = l1;
l1 = l1.next;
} else {
tail.next = l2;
l2 = l2.next;
}
tail = tail.next;
}
// 如果其中一个链表还剩余未遍历,则将其余部分追加到新链表
if (l1 != null) {
tail.next = l1;
} else if (l2 != null) {
tail.next = l2;
}
return dummyHead.next; // 返回新链表的头节点
}
```
这个函数首先创建一个虚拟头节点`dummyHead`,然后通过比较当前`l1`和`l2`链表的节点值,选择较小的一个添加到新链表`tail.next`,并更新`tail`和对应链表的指针。最后返回`dummyHead.next`作为结果。
阅读全文