给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 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; } } 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例1 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1] 请用java代码回答该问题
时间: 2024-04-11 11:27:40 浏览: 15
可以使用遍历两个链表的方式来实现相加的操作。
首先,创建一个新的链表用于存储结果。同时,创建两个指针分别指向两个链表的头节点。
然后,使用一个变量 carry 来表示进位。从头节点开始遍历两个链表,每次将对应位置的节点值相加,并加上上一位的进位值。将和的个位数作为当前节点的值存储在新链表中,并更新进位值。
如果其中一个链表遍历完毕,而另一个链表还没有遍历完毕,则将剩余的节点值与进位值相加,并将结果存储在新链表中。
最后,如果遍历完成后,进位值仍然大于 0,则在新链表的末尾添加一个节点,节点值为进位值。
以下是 Java 代码实现:
```java
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(0); // 创建一个虚拟头节点
ListNode curr = dummy; // 当前节点指针
int carry = 0; // 进位值
while (l1 != null || l2 != null) {
int x = (l1 != null) ? l1.val : 0;
int y = (l2 != null) ? l2.val : 0;
int sum = carry + x + y;
carry = sum / 10; // 更新进位值
curr.next = new ListNode(sum % 10); // 创建新节点,存储和的个位数
curr = curr.next; // 更新指针
if (l1 != null) l1 = l1.next;
if (l2 != null) l2 = l2.next;
}
if (carry > 0) {
curr.next = new ListNode(carry); // 如果进位值大于0,添加一个节点
}
return dummy.next; // 返回新链表的头节点
}
```
使用该函数,可以将两个链表 `[2,4,3]` 和 `[5,6,4]` 相加,得到结果 `[7,0,8]`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)