大数相加
时间:2022-07-24
本文章向大家介绍大数相加,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
“ 都那么大了,还相加”
题目:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
举个栗子:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
题解1:
思路:
两个大数是用链表逆序存储的,所以是从头遍历相加
每一位的相加会是三个值的相加,加数(a)、被加数(b)和来自低位的进位(c)
从最低位开始相加,用一个临时变量存储来自低位的进位
最低位的加数和被加数最大为9,进位为最大为1,相加后最低位的值最大为8
来自低位的进位的值最大为1,加数和被加数最大为9,所以当前值最大为9,向更高一位的进位最大为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) {
ListNode result = new ListNode(-1);
ListNode pointerL1 = l1;
ListNode pointerL2 = l2;
ListNode pointerCur = result;
int pre = 0;
while(pointerL1 != null || pointerL2 !=null){
int i1=0,i2=0;
if(pointerL1 != null){
i1=pointerL1.val;
pointerL1 = pointerL1.next;
}
if(pointerL2 != null){
i2=pointerL2.val;
pointerL2 = pointerL2.next;
}
int sum = i1+i2 +pre;
int unit = sum % 10;
pre = sum /10;
ListNode temp = new ListNode(unit);
pointerCur.next = temp;
pointerCur=pointerCur.next;
}
if(pre>0){
ListNode temp = new ListNode(pre);
pointerCur.next = temp;
}
return result.next;
}
}
---end---
文/戴先生@2020年3月18日
- Hadoop: MapReduce2多个job串行处理
- UE4新手引导之下载和安装虚幻4游戏引擎
- mac 下卸载mysql的方法
- ZooKeeper 笔记(1) 安装部署及hello world
- mybatis 使用经验小结
- ZooKeeper 笔记(2) 监听数据变化
- 使用C# 和Consul进行分布式系统协调
- 设置 java -jar 的进程显示名称
- 爱浪携手豆瓣内容、腾讯共同发布AI语音耳机
- Win.ini和注册表的读取写入
- ZooKeeper 笔记(4) 实战应用之【消除单点故障】
- 64位centos 下编译 hadoop 2.6.0 源码
- Python基础原理:FP-growth算法的构建
- MFC中如何画带实心箭头的直线
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法