题解 | #牛群的能量值#

牛群的能量值

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) {
        
        ListNode dummy = new ListNode(-1);
        ListNode cur = dummy;
        int carry = 0;

        while (l1 != null || l2 != null) {
            int sum = carry;

            if (l1 != null) {
                sum += l1.val;
                l1 = l1.next;
            }

            if (l2 != null) {
                sum += l2.val;
                l2 = l2.next;
            }

            carry = sum / 10;
            cur.next = new ListNode(sum % 10);
            cur = cur.next;
        }

        if (carry > 0) {
            cur.next = new ListNode(carry);
        }

        return dummy.next;
    }
}

使用java解题

知识点:遍历链表

思路:

使用一个虚拟节点dummy来简化对合并链表头部的处理。在循环中,同时遍历两个链表,将对应节点的值与进位相加得到sum,然后创建一个新节点cur.next,将sum的个位数作为新节点的值,将cur指向新节点,同时更新进位carry。最后,如果还存在进位,即carry > 0,则创建一个值为carry的新节点连接到新链表的末尾。最终返回虚拟节点dummy的下一个节点,则为合并后的链表的头部。 这种优化可以减少代码冗余,并且能够处理更多的测试用例,包括两个链表长度不等的情况。同时,不修改输入的链表节点的值,而是创建新的节点,在一些情况下也更加安全。

全部评论

相关推荐

被加薪的哈里很优秀:应该继续招人,不会给你留岗位的
点赞 评论 收藏
分享
ResourceUtilization:算法很难了,现在都需要相关论文还有对应的实习,可以先试试中厂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务