java - 将两个链表表示的数相加,进位值不传递给下一次计算

标签 java algorithm linked-list

<分区>

我写了下面的代码来计算链表表示的两个数的和。举一个最简单的例子,两个相同的链表是3->8->2->1->null,输出应该是7->6->4->2->null,但是我得到的结果是6->6->4->2->null。请帮忙!!谢谢!

public ListNode addListF(ListNode l1, ListNode l2, int carry)  {

        if (l1 == null && l2 == null && carry == 0) {
            return null;
        }
       ListNode result = new ListNode();
        int len1 = l1.length(l1);
        int len2 = l2.length(l2);

        /*pad the shorter list with 0*/
       if (len1 < len2) {
            l1 = padList(l1, len2 - len1);
        } else {
            l2 = padList(l2, len1 - len2);
        } 

        result.next = addListF(l1.next, l2.next, carry);
        int sum = carry + l1.data + l2.data;
        result.data = sum % 10;
        carry = sum / 10;

        return result;

    }

最佳答案

您应该将递归调用放在之后计算当前数据并进位。否则你总是传递 0 作为进位。

关于java - 将两个链表表示的数相加,进位值不传递给下一次计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37243268/

相关文章:

java - 身份验证提供者和 OAuth

java - java服务器面临el的空控制

java - 字符串在阿拉伯语中显示为单独的字母

algorithm - 如何使用Big O计算增长率?

algorithm - 正整数和负整数的子集和

java - 如何在 OK-HTTP header 中添加非 ASCII 字符串?

algorithm - 如何旋转二维数组?

c - 如何链接具有不同结构的链表

c - 如何将结构列表添加到现有结构

C - 需要帮助实现 ADT