当前位置:网站首页>Leetcode 2.两数相加 两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的。
Leetcode 2.两数相加 两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的。
2022-07-30 06:29:00 【清风亦思雨】
题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
题目来源:力扣(LeetCode)
题目链接:https://leetcode.cn/problems/add-two-numbers


提示:
- 每个链表中的节点数在范围
[1, 100]内 0 <= Node.val <= 9- 题目数据保证列表表示的数字不含前导零
我们来分析一下题目:
给你了两个链表,按相反顺序把他们转换为整数,然后相加,再反向输出为链表。
先注意一点,因为根据提示第二条,节点的值可能很大,因此需要用到BigInteger这个类,代码如下:
import java.math.BigInteger;
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//用于依次添加节点
StringBuilder s1 = new StringBuilder();
StringBuilder s2 = new StringBuilder();
//得到两数相加后的值
BigInteger b1 = new BigInteger("" + replace(s1, l1)).add(new BigInteger("" + replace(s2, l2)));
//把b1 转为字符串操作
String s = "" + b1;
//新建链表
ListNode head = new ListNode((int)s.charAt(s.length()-1)-'0');
ListNode l = null;
//依次添加字符串数据
for (int i = 0; i < (s.length()-1); i++) {
l = new ListNode((int)s.charAt(s.length() - (i + 2))-'0');
add(head,l);
}
//返回头节点
return head;
}
//循环向StringBuilder里面添加内容
public StringBuilder replace(StringBuilder s, ListNode l) {
boolean flag = true;
while (flag) {
if (l != null) {
s.append(l.val);
l = l.next;
} else {
flag = false;
}
}
//反转顺序
return s.reverse();
}
public void add(ListNode head, ListNode l) {
while (head.next != null) {
head = head.next;
}
head.next = l;
}
}执行用时:8 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:41.6 MB, 在所有 Java 提交中击败了32.66%的用户
通过测试用例:1568 / 1568
可以看到执行速度很快,但是内存占用较多。
边栏推荐
- mysql8的my.conf配置文件参考指引
- Electron中设置菜单(Menu),主进程向渲染进程共享数据
- LSF提交作业命令--bsub
- 保存在 redis中的token 如何续期?
- DP5340 domestic replacement for CM5340 stereo audio A/D converter chip
- go : go gin returns JSON data
- Mybitatis related configuration files
- 申请内存,std::transform和AVX256指令集用例和执行速度比较
- sql concat()函数
- How does Redis prevent oversold and inventory deduction operations?
猜你喜欢
随机推荐
Universal js time date format conversion
Charles通过Rewrite越过OPTIONS请求拦截
mysql8的my.conf配置文件参考指引
2020 数学建模之旅
深度学习:线性回归模型
go : 使用gorm查询记录
进制转换。。。
mysql设置会话超时时间
go : go gin返回JSON数据
go : go-redis set operations
解决datagrip连接sqlserver报错:[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
01 多线程与高并发 - 基础概念
Interview with Ant: How do these technology pioneers do the bottom-level development well?| Excellent technical team interview
taro package compilation error
从 Google 离职,前Go 语言负责人跳槽小公司
What new materials are used in the large aircraft C919?
你好,我的新名字叫 “铜锁 / Tongsuo”
适合程序员的输入法
[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及
ArrayList









