zoukankan      html  css  js  c++  java
  • 面试题02.05 链表求和

    题目
    给定两个用链表表示的整数,每个节点包含一个数位。

    这些数位是反向存放的,也就是个位排在链表首部。

    编写函数对这两个整数求和,并用链表形式返回结果。

    题解

    遍历两个链表,也就是遍历每个节点,
    当两个节点至少有一个不是null或者进位不是0的条件下
    需要创建新的节点,每个新节点的值为 (进位+非空节点值) %10
    进位数为(进位+非空节点值) /10
    如果上述三个条件都不满足,那么说明两个节点都是null,并且进位是0,那么就不需要产生新的节点
    直接返回初始节点即可

    class Solution {
        
        public ListNode addTwoNumbers(ListNode l1,ListNode l2){
            //创建返回节点
            ListNode result = new ListNode(0);
            ListNode p = result;
    
            //初始化进位值0
            int carry = 0;
            //遍历两个链表,当l1和l2至少有一个不是null或者carry!=0
            //才需要创建新的节点
            while(l1 != null || l2!=null || carry !=0){
                //如果l1!=null,计算当前位需要加上l1的值
                if(l1!=null){
                    carry += l1.val;
                    l1 = l1.next;
                }
    
                if(l2!=null){
                    carry += l2.val;
                    l2 = l2.next;
                }
    
                p.next = new ListNode(carry % 10);
                carry /= 10;
                p = p.next;
            }
            return result.next;
        }
        
    }
    
  • 相关阅读:
    python json模块出现Invalid control character这个异常的原因
    KMS服务,使用命令激活windows/office
    vscode Python文件头部信息
    MIMIC-III Clinical Database 翻译
    autohotkey 设置
    DeepLearning 写代码常用
    VScode 个人设置
    随机种子设置
    samba配置
    jieba 分词不显示日志
  • 原文地址:https://www.cnblogs.com/windWheel/p/15781496.html
Copyright © 2011-2022 走看看