题解 | #牛群的能量值#

牛群的能量值

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

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(0);  // 创建虚拟头节点
        ListNode cur = dummy;  // 当前节点
        int carry = 0;  // 进位
        
        while (l1 != null || l2 != null) {
            int val1 = l1 != null ? l1.val : 0;
            int val2 = l2 != null ? l2.val : 0;
            int sum = val1 + val2 + carry;  // 当前节点值的和
            
            carry = sum / 10;  // 计算进位
            int digit = sum % 10;  // 计算当前节点值
            
            cur.next = new ListNode(digit);  // 构造节点并连接到结果链表
            cur = cur.next;  // 移动指针
            
            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;
        }
        
        // 如果最后还有进位,构造进位节点并连接到结果链表
        if (carry > 0) {
            cur.next = new ListNode(carry);
        }
        
        return dummy.next;  // 返回结果链表的头节点
    }
}

题目考察的知识点:

链表操作和逆序相加。

解题方法分析:

  1. 首先,遍历两个链表,同时初始化一个进位carry为0,一个虚拟头节点dummy作为结果链表的起始。
  2. 在遍历过程中,分别取出两个链表当前节点的值,然后将它们相加,再加上之前的进位值。
  3. 计算当前节点的值时,需要将两个链表当前节点的值相加,再加上进位值。然后更新进位值,如果当前值大于等于10,说明需要进位,将进位值设置为1,并将当前值取模得到真实的节点值。
  4. 将新的节点值构造成一个节点,并将其连接到结果链表的末尾。
  5. 最后,遍历完两个链表后,如果进位值不为0,还需要将进位值构造成一个节点并连接到结果链表的末尾。
  6. 返回结果链表的虚拟头节点的下一个节点,即为最终的结果链表。
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 17:32
那如果是字节外包呢?据我所知工牌无区别 可以晒出去装X的那种
秋盈丶:残酷的是,都一样,管你是不是字节,不过我是很反对这种的,本是同根生,市场行情决定了用工的模式会有很多外包,分层只是单纯为了筛选
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着接:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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