
计算不限定大小的两个数相加
发布日期:2021-05-14 13:57:42
浏览次数:18
分类:精选文章
本文共 1267 字,大约阅读时间需要 4 分钟。
前言
int类型数据是有一定大小范围的,在32位机子下:[-2147483648, 2147483647]。当我们进行超出范围的加法运算时,需要采取特殊的方法来处理这些溢出部分。解题思路
将数字转换为String类型,再转换为char[]数组进行模拟人算:进位法。以LeetCode第二题为例,即给定两个逆序存储数字的链表,求它们的和。例如,3 4 2对应的数字342,加上5 6 4对应的465,得到结果为807。值得注意的是,数字的顺序是逆序存储的,因此在加法运算时,需要逆序处理每一位数字。这个过程类似于手算加法,从最低位开始逐位加上进位。
题目
给出两个非空的链表,用来表示两个非负整数。它们的位数是按照逆序存储的,每个节点存储一位数字。假设这两个数都不会以0开头,要将它们相加,返回一个新的链表表示它们的和。示例
输入:(2->4->3)+(5->6->4),输出:7->0->8(342 + 465 = 807)。代码
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { int is_Ten = 0; int l1Num = 0, l2Num = 0, tempSum; ListNode resultListNode = null, tempListNode = null;while (l1 != null || l2 != null) { if (resultListNode == null) { resultListNode = new ListNode(); tempListNode = resultLoader; } else { tempListNode.next = new ListNode(); tempListNode = tempListNode.next; } l1Num = l1 == null ? 0 : l1.val; l2Num = l2 == null ? 0 : l2.val; tempSum = l1Num + l2Num + is_Ten; is_Ten = tempSum / 10; tempListNode.val = tempSum % 10; if (l1 != null) l1 = l1.next; if (l2 != null) l2 = l2.next; } if (is_Ten == 1) { tempListNode.next = new ListNode(); tempListNode = tempListNode.next; tempListNode.val = is_Ten; } return resultListNode;
}
测试结果
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月06日 12时14分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ORA-00020 超过当前最大连接数
2019-03-11
合理控制oracle数据库具有DBA权限的用户
2019-03-11
【Android】源码分析 - Activity启动流程
2019-03-11
喝红茶是否会上火
2019-03-11
Android进阶解密读书笔记2——第2章:Android系统启动——第1、2小节
2019-03-11
Java 位运算符表示多种状态
2019-03-11
GreenDao之注解
2019-03-11
Android使用Font Awesome
2019-03-11
主线程中Looper的轮询死循环为何没有阻塞主线程?
2019-03-11
Gradle实战四:Jenkins持续集成
2019-03-11
OkHttp3源码解析--设计模式
2019-03-11
使用RestTemplate,显示请求信息,响应信息
2019-03-11
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
2019-03-11
为什么WGCLOUD安装完后,启动服务端打不开网页
2019-03-11
wgcloud网络监控出现负值
2019-03-11
performSelector系列方法的研究
2019-03-11
Xcode使用
2019-03-11
ios 官方sample
2019-03-11