JAVA题给你两个 非空 的链表
时间: 2024-03-25 14:39:05 浏览: 46
c代码-给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。
好的,我来解答这个问题。给定两个非空的链表,我们需要将它们合并成一个链表,使得新链表中的节点按照从小到大的顺序排列。下面是Java代码实现:
```Java
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(0);
ListNode cur = dummy;
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
cur.next = l1;
l1 = l1.next;
} else {
cur.next = l2;
l2 = l2.next;
}
cur = cur.next;
}
cur.next = l1 != null ? l1 : l2;
return dummy.next;
}
```
这个代码中,我们定义一个虚拟头节点 dummy,然后定义 cur 指针指向当前节点。接着我们比较 l1 和 l2 的节点值,将小的节点接到 cur 后面,然后将 cur 指针移动到下一个节点。最后,我们将 cur 的 next 指向剩下的 l1 或 l2 中非空的那个链表。最后返回 dummy 的下一个节点即可。
阅读全文