LeetCode题解【题2】:两数相加
原题链接:https://leetcode-cn.com/problems/add-two-numbers/
查看请另起链接打开。
解题思路
执行用时 :2 ms, 在所有 Java 提交中击败了99.97%的用户。内存消耗 :40.6 MB, 在所有 Java 提交中击败了91.21%的用户。
此题的关键是自己实现一个两数的加法。
之前以为可以通过数学运算实现,发现无论是int还是long都会存在溢出,无法完成所有测试案例。
1、加法思路很简单,像解小学数学加法一样,个位和个位相加,十位和十位相加,类推。使用一个进位符c,若每位的两个数相加的和大于9,则,c=1;在当次相加完后,c归0;
2、取数的时候要保证两个ListNode的位都对应上,则取数都在同一个循环中去取,如果当前节点非空则取出值且当前节点指向下一个节点,若当前节点为空则取值为0。循环的跳出点是当两个当前节点的取值都为空时。
3、存数的时候也需要指定两个节点,一个是需要返回的节点ListNode r,它指向第一个节点;还有一个是存储当前计算的值的节点。初始化条件当r为null,则将第一个数存入r,再令current = r,以后每次存值的时候都是current移向下一个节点。
最后如果输入的两个ListNode都遍历完了,但是进位符c还为1,说明需要再进一位,则在返回的r后再添加1(相当于最高位是1,也只会是1)。
代码
/**
* 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 n1,n2,n3;
// 初始化进位符为0
int c = 0;
ListNode r = null;
ListNode current = null;
while(l1!= null || l2!= null){
// 取数操作
if (l1 == null){
n1 = 0;
}else {
n1 = l1.val;
l1 = l1.next;
}
if (l2 == null){
n2 = 0;
}else {
n2 = l2.val;
l2 = l2.next;
}
// 当前位两个数相加的和,带上进位符c
n3 = n1+n2+c;
// 相加完成,进位符归0
c = 0;
// 若每位的两个数相加的和大于9,则,c=1
if (n3 > 9){
n3 %= 10;
c = 1;
}
// 存数操作
if (r == null) {
r = new ListNode(n3);
current = r;
} else {
current.next = new ListNode(n3);
current = current.next;
}
}
// 最后如果输入的两个ListNode都遍历完了,但是进位符c还为1,说明需要再进一位,则在返回的r后再添加1
if (c == 1){
current.next = new ListNode(1);
}
return r;
}
}
作者:xu-man-man (本人)
链接:https://leetcode-cn.com/problems/add-two-numbers/solution/liang-shu-xiang-jia-liang-ge-lian-biao-shi-xian-ji/
来源:力扣(LeetCode)
LeetCode题解【题2】:两数相加的更多相关文章
- 【LeetCode题解】2_两数相加
目录 [LeetCode题解]2_两数相加 描述 方法一:小学数学 思路 Java 代码(非递归写法) Java 代码(递归写法) Python 代码(非递归写法) [LeetCode题解]2_两数相 ...
- leetcode刷题2:两数相加add_two_numbers
题目:两数相加 (难度:中等) 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字. 将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以 ...
- LeetCode题解002:两数相加
两数相加 题目 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字 如果,我们将这两个数相加起来,则会返回一个新的链表 ...
- Leetcode(2)两数相加
Leetcode(2)两数相加 [题目表述]: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...
- 【leetcode】 算法题2 两数相加
问题 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例 ...
- Leetcode(二)两数相加
两数相加 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...
- LeetCode 0、《两数相加》
一.给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 ...
- Leetcode(2)-两数相加(包含链表操作的注意事项)
给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...
- LeetCode随缘刷题之两数相加
逐步解释,有说错的地方欢迎指正. package leetcode.day_12_03; /** * 给你两个非空 的链表,表示两个非负的整数.它们每位数字都是按照逆序的方式存储的,并且每个节点只能存 ...
- Leecode第二题:两数相加
Leecode2 先看题目 : 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的 ...
随机推荐
- Java实现第八届蓝桥杯迷宫
迷宫 题目描述 X星球的一处迷宫游乐场建在某个小山坡上. 它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母. 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R ...
- 用云开发Cloudbase,实现小程序多图片内容安全监测
前言 相比于文本的安全检测,图片的安全检测要稍微略复杂一些,当您读完本篇,将get到 图片安全检测的应用场景 解决图片的安全校验的方式 使用云调用方式对图片进行检测 如何对上传图片大小进行限制 如何解 ...
- 两条命令实现nodejs快速安装
操作系统: debian, ubuntu, fedora 当前版本: v14.4.0 一键安装命令: curl -sL https://deb.nodesource.com/setup_14.x | ...
- PHP上传进度支持(Upload progress in sessions)
文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现. 从PHP的角度 ...
- Install Centos7 on VirtualBox in mac
Step 1:准备虚拟机及镜像 下载合适的Virtual Box版本 官方下载链接:https://www.virtualbox.org/wiki/Downloads 这里选择的版本是:https:/ ...
- C语言中main函数的参数argc和argv
参考资料: http://wiki.opencv.org.cn/index.php/Main%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0argc%EF%BC%8Cargv% ...
- 使用matplotlib进行可视化
转自:https://blog.csdn.net/qq_30614345/article/details/99049790 https://blog.csdn.net/qq_30614345/arti ...
- Nginx配置rewrite过程介绍
创建rewrite语句 vi conf/vhost/www.abc.com.conf #vi编辑虚拟主机配置文件 文件内容 server { listen 80; server_name abc.co ...
- 一文搞定Redis五大数据类型及应用场景
本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...
- AWS 错误标记3
1. What is the average queue length recommended by AWS to achieve a lower latency for the 200 PIOPS ...