Leetcode 经典面试题——02两数相加

  1. 两数相加
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807
    这道题和字符串相加的思路是一样的
    1. 我们需要明白对应位相加的结果是由两部分组成的
    假设两个数 x y
    res = x + y
    那么res由 进位 和 当前位组成
    我们可以利用 res % 10 得到当前位数
    利用 res / 10 得到进位数
    那么接下来的数相加无非就是 对应位 加上 进位数 然后经过 % 10 /10的操作得到当前位和进位 依次循环
    直接上代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int add = 0;
        ListNode sum = new ListNode(0);
        ListNode temp = sum;
        while(l1 != null || l2 !=null){
            int x = l1 != null? l1.val:0;
            int y = l2 != null? l2.val:0;
            int res = x + y + add;
            ListNode newNode = new ListNode(res % 10);
            temp.next = newNode;
            add = res / 10;
            temp = temp.next;
            if(l1 != null)l1 = l1.next;
            if(l2 != null)l2 = l2.next;
        }
        if(add != 0){
            ListNode newNode = new ListNode(add);
            temp.next = newNode;
        }
        return sum.next;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件工程吕云翔第二版)是一本关于软件工程领域的教材,其中包含了许多重要的知识点。以下是其中一些知识点的介绍: 1. 软件生命周期:软件生命周期是指软件从概念到退役的整个过程。它包括需求分析、设计、编码、测试、部署和维护等阶段。 2. 软件需求工程:软件需求工程是指对软件系统需求进行识别、分析、规范和验证的过程。它包括需求获取、需求分析、需求规格和需求验证等活动。 3. 软件设计原则:软件设计原则是指在软件设计过程中应遵循的一些基本原则,例如单一职责原则、开闭原则、里氏替换原则等。这些原则有助于提高软件的可维护性、可扩展性和可重用性。 4. 软件测试:软件测试是指对软件系统进行验证和验证的过程。它包括单元测试、集成测试、系统测试和验收测试等不同层次的测试。 5. 软件项目管理:软件项目管理是指对软件项目进行计划、组织、协调和控制的过程。它包括项目计划、项目组织、项目进度管理和项目风险管理等活动。 6. 软件质量保证:软件质量保证是指通过制定和执行一系列质量管理活动来确保软件产品的质量。它包括质量计划、质量控制和质量改进等方面。 以上是软件工程吕云翔第二版)中的一些重要知识点。如果您对其中的某个知识点有更具体的问题,我可以为您提供更详细的解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值