Java 题解 | #牛群的能量值#

牛群的能量值

https://www.nowcoder.com/practice/fc49a20f47ac431981ef17aee6bd7d15

这个问题考察的是链表的操作和数学运算。

代码中主要使用两个指针 l1l2 来遍历两个链表,同时使用一个进位变量 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; // 返回结果链表的头节点(去掉哑节点)
        }
    }

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务