Java 题解 | #牛群的能量值#
牛群的能量值
https://www.nowcoder.com/practice/fc49a20f47ac431981ef17aee6bd7d15
这个问题考察的是链表的操作和数学运算。
代码中主要使用两个指针 l1 和 l2 来遍历两个链表,同时使用一个进位变量 carry 来保存进位值。每一步,我们将两个链表当前节点的值以及进位值相加,并取余得到当前位的值,然后创建一个新节点并将其连接到结果链表上。最后返回结果链表的头节点。
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 dummy = new ListNode(-1);
ListNode current = dummy; // 当前节点,用于构建结果链表
int carry = 0; // 进位
while (l1 != null || l2 != null || carry != 0) {
int sum = carry; // 当前位的和等于进位值
if (l1 != null) {
sum += l1.val; // 加上第一群牛当前节点的能量值
l1 = l1.next; // 指向下一个节点
}
if (l2 != null) {
sum += l2.val; // 加上第二群牛当前节点的能量值
l2 = l2.next; // 指向下一个节点
}
carry = sum / 10; // 计算进位
sum = sum % 10; // 计算当前位的值
ListNode newNode = new ListNode(sum); // 创建新节点
current.next = newNode; // 将新节点连接到结果链表上
current = current.next; // 更新当前节点
}
return dummy.next; // 返回结果链表的头节点(去掉哑节点)
}
}
深信服公司福利 729人发布