知识点
链表,模拟
解题思路
将两个链表对应节点的值相加形成一个新的节点,节点下移一位直达两个链表都为空,如果某时只有一个链表不为空那就只加它一个。
注意需要判断相加节点链表的值是否产生进位,在下一次节点值相加时需要加上进位的值。
在链表都移动到末尾时还需要判断进位是否为1,是则还需要加一个值为1的节点在末尾。
Java题解
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
public ListNode addEnergyValues (ListNode l1, ListNode l2) {
// write code here
ListNode ans = new ListNode(0);
ListNode next = ans;
int carry = 0; //进位
while(l1 != null || l2 != null){
int val = carry;
if(l1 != null) {
val += l1.val;
l1 = l1.next;
}
if(l2 != null){
val += l2.val;
l2 = l2.next;
}
carry = val >= 10 ? 1 : 0;
val = val % 10;
ListNode curr = new ListNode(val);
next.next = curr;
next = next.next;
}
//进位不为0
if(carry != 0){
next.next = new ListNode(1);
}
return ans.next;
}
}



京公网安备 11010502036488号