前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【力扣刷题】2. 两数相加

【力扣刷题】2. 两数相加

作者头像
jayjay
发布2022-11-02 15:50:45
3060
发布2022-11-02 15:50:45
举报
文章被收录于专栏:jay_blog

一、题目描述

来源:力扣(LeetCode)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

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

示例 1:

代码语言:javascript
复制
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

代码语言:javascript
复制
输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:

代码语言:javascript
复制
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

  • 每个链表中的节点数在范围 [1, 100] 内
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零

二、思路分析

先创建一个0的根节点用于起始位置,然后用一个临时节点标记当前节点,使用while迭代两个数据,下表不存在的用0代替,用carray存储进位,每加一次就生成一个节点累加,如果到最后一个节点还存在进位,再新增一个节点,值就是进位的值,最后去除初始的0跟节点就是相加后的链表

三、代码实现

代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        //先创建一个0的节点为占位
        ListNode res = new ListNode(0);
        //标记当前所在的节点
        ListNode cur = res;
        //标记进位
        int carry = 0;
        //当长度一样, 不存在的取 0 代替
        while (l1 != null || l2 != null) {
            int num1 = l1 == null ? 0 : l1.val;
            int num2 = l2 == null ? 0 : l2.val;
            //两数之和
            int sum = num1 + num2;
            //加上进位
            sum = sum + carry;
            //取的进位
            carry = sum / 10;
            //取个位数
            sum %= 10;
            //设置值
            cur.next = new ListNode(sum);
            //移动链表到下一个
            cur = cur.next;
            //下一组数字
            l1 = l1 == null ? null : l1.next;
            l2 = l2 == null ? null : l2.next;
        }
        //如果最后还有进位,那么在最后添加一个node
        if(carry == 1){
            cur.next = new ListNode(carry);
        }
        return res.next;
    }
}

四、运行结果

总结

这道题,最开始一直在于数组越界和低位补0的还有考虑进位的问题上,只要搞清楚这些,思路清晰,你会发现这道题不难的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目描述
  • 二、思路分析
  • 三、代码实现
  • 四、运行结果
  • 总结
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档