
leetcode--两数相加
发布日期:2021-05-07 02:58:40
浏览次数:32
分类:精选文章
本文共 1647 字,大约阅读时间需要 5 分钟。
leetcode-两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807实现思路:
1.我们先看数据结构,ListNode 含有一个数值部分int,和一个指向同类节点对象的指针 2.两数相加,首先输入的数据是逆向输入的,先输入各位,依次十位百位等,当我们进行相加的时候,我们首先要创建一个新的链表结构来存储结果 这个链表的头节点是pre,然后设置一个游标cur表示进行下一步加和的结果的节点,因为两个不超过十的数进行相加,结果只能在0–19之间,所以我们还需要设置一个进位的标志carry,当两个节点的val值相加后,对十取余为cur节点的val,进位标志carry的值应为对10相除取整 3.然后将节点后移,两个相加的链表有一个为null则将其val设为0,将另一个链表val和进位carry相加,当l1,l2均为为null停止,还要注意最后carry的值的情况,不要遗忘 代码展视:/** * 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) { ListNode pre = new ListNode(0); ListNode cur = pre; int carry = 0; while(l1 != null || l2 != null) { int x = l1 == null ? 0 : l1.val; int y = l2 == null ? 0 : l2.val; int sum = x + y + carry; carry = sum / 10; sum = sum % 10; cur.next = new ListNode(sum); cur = cur.next; if(l1 != null) l1 = l1.next; if(l2 != null) l2 = l2.next; } if(carry == 1) { cur.next = new ListNode(carry); } return pre.next; }}
复杂度分析
时间复杂度:O(max(m,n)),其中 m,nm,n 为两个链表的长度。我们要遍历两个链表的全部位置,而处理每个位置只需要 O(1) 的时间。 空间复杂度:O(max(m,n))。答案链表的长度最多为较长链表的长度 +1。发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月02日 07时03分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ButterKnife使用问题
2021-05-08
为什么讨厌所谓仿生AI的说法
2021-05-08
ORACLE 客户端工具
2021-05-08
使用第三方sdk,微信wechat扫码登录
2021-05-08
基于LabVIEW的入门指南
2021-05-08
“/”应用程序中的服务器错误。
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
水调歌头·1024
2021-05-08
C++ 函数重载
2021-05-08
Nginx的Gzip功能
2021-05-08
abstract关键字的使用
2021-05-08
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08