题解 | 牛群的能量值 | Java
牛群的能量值
https://www.nowcoder.com/practice/fc49a20f47ac431981ef17aee6bd7d15
考察链表双指针遍历的情况,需要先了解竖式加法的形式,从低位对齐相加到高位。中间有进位需要单独加上。题目描述中头结点就是低位,所以直接从头开始计算即可。
所以该题主要在于模拟,套用了链表的形式。
注意10行while循环判断来表示两个链表的遍历。用temp存储进位。
注意一个链表遍历完后,对于另一个链表也需要循环遍历完。
最后再去判断是否有进位,有的话还需要创建新节点 35-39行
import java.util.*;
public class Solution {
public ListNode addEnergyValues (ListNode l1, ListNode l2) {
// write code here
ListNode res = new ListNode(-1);
ListNode t = res;
int temp = 0; //存储进位
while(l1!=null&&l2!=null){
int number = (l1.val + l2.val + temp)%10;
temp = (l1.val + l2.val + temp)/10;
l1 = l1.next;
l2 = l2.next;
ListNode node = new ListNode(number);
t.next = node;
t = t.next;
}
while(l1!=null){
int number = (l1.val + temp)%10;
temp = (l1.val + temp)/10;
ListNode node = new ListNode(number);
t.next = node;
t = t.next;
l1 = l1.next;
}
while(l2!=null){
int number = (l2.val + temp)%10;
temp = (l2.val + temp)/10;
ListNode node = new ListNode(number);
t.next = node;
t = t.next;
l2 = l2.next;
}
if(temp!=0){
ListNode node = new ListNode(temp);
t.next = node;
t = t.next;
}
return res.next;
}
}
#面试高频TOP202#
安克创新 Anker公司福利 592人发布