时间卡 2021-09-25 12:13 采纳率: 100%
浏览 28
已结题

leetcode的两数相加,java,为什么运行结果少一位数

这是我代码的显示结果
解答失败:
测试用例:[9,9,9,9,9,9,9]
[9,9,9,9]
测试结果:[8,9,9,9,0,0,0]
期望结果:[8,9,9,9,0,0,0,1]

这是具体代码:

class Solution {
    ListNode res = null, cur = null;
    int c = 0;
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if (l1 != null || l2 != null) {
            int a = l1 != null ? l1.val + c : c;   //l1当前结点的值与进位的和
            int b = l2 != null ? l2.val : 0;       //l2当前结点的值
            int sum = (a + b) % 10;                //新链表当前节点的值
            c = (a + b) / 10;                      //进位值
            if (cur == null & res == null) {       
                res = cur = new ListNode(sum);
            } else {
                cur.next = new ListNode(sum);
                cur = cur.next;
            }
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
            if (l1 == null & l2 == null & c == 0) {
                return res;
            }
            addTwoNumbers(l1, l2);
        }
        return res;
    }
}


  • 写回答

1条回答 默认 最新

  • 码仔ROC 2021-09-28 09:53
    关注
    
    class Solution {
        ListNode res = null, cur = null;
        int c = 0;
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            if (l1 != null || l2 != null || c != 0) {
                int a = l1 != null ? l1.val + c : c;   //l1当前结点的值与进位的和
                int b = l2 != null ? l2.val : 0;       //l2当前结点的值
                int sum = (a + b) % 10;                //新链表当前节点的值
                c = (a + b) / 10;                      //进位值
                if (cur == null & res == null) {       
                    res = cur = new ListNode(sum);
                } else {
                    cur.next = new ListNode(sum);
                    cur = cur.next;
                }
                if (l1 != null) {
                    l1 = l1.next;
                }
                if (l2 != null) {
                    l2 = l2.next;
                }
                if (l1 == null & l2 == null & c == 0) {
                    return res;
                }
                addTwoNumbers(l1, l2);
            }
            return res;
        }
    }
     
    

    执行到最后一位L1和L2都是空,但c=1.
    修改一下判断:
    if (l1 != null || l2 != null || c != 0)

    下次提问把问题也复制上。还得自己去找问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 修改了问题 9月25日
  • 创建了问题 9月25日

悬赏问题

  • ¥15 Python ModuleNotFoundError报错,如何解决?
  • ¥15 我下载图形界面重启完就变成这样了,打字也打不了,动也动不了,该怎么解决(操作系统-centos)
  • ¥15 VBA中在窗体中遍历所有checkbox控件,提取出被选中的checkbox的caption值
  • ¥15 在Ubuntu上有什么命令,或者是系统文件能告诉我链接nvme ssd的pcie槽位是不是支持热插拔功能?
  • ¥15 ansys license许可证问题
  • ¥20 QQ号和密码都能正常登录微信 QQ号和密码登录微信显示密码错误
  • ¥15 qiankun主应用注册子应用提示跨域
  • ¥15 单片机RTOS Kernel与应用分离开发,Kernel如何调起应用?
  • ¥15 快手小店商家版APP怎么第三方APP跳转到指定用户聊天界面
  • ¥15 为什么AVL fire软件仿真时的步长改变了,仿真结果也会改变