每日一则 LeetCode: Add Two Numbers
描述
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
中文解释
给定两个非空的链表里面分别包含不等数量的正整数,每一个节点都包含一个正整数,肯能是0,但是不会是01
这种情况。我们需要按照倒序计算他们的和然后再次倒序输出。
解题思路
这题没有什么巧妙的方式,不过仔细思考一下,它其实是在模拟正常的多位数加法。我们试想在计算多位数加法的时候,从最末位开始计算,如果大于10就进位,并加到下次高位计算中;如果不大于10继续计算;就这样我们就有了下面的阶梯思路。
一次循环就可以搞定,通过判断他们其中是不是空,就像是多位数加减法,如果一个高位没有了,当然也要继续计算,所以有了下面默认 int carry = 0
,然后通过 sum / 10
算出进位,通过 sum % 10
算出当前位,这个题就迎刃而解。
源码
public class AddTwoNumbers {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode tempNode = new ListNode(0);ListNode a = l1, b = l2, curr = tempNode;int carry = 0;while (a != null || b != null) {int x = a != null ? a.val : 0;int y = b != null ? b.val : 0;int sum = carry + x + y;carry = sum / 10;curr.next = new ListNode(sum % 10);curr = curr.next;if (a != null) a = a.next;if (b != null) b = b.next;}if (carry > 0) {curr.next = new ListNode(carry);}return tempNode.next;}public static void main(String[] args) {ListNode l1 = new ListNode(2);l1.add(new ListNode(4));l1.add(new ListNode(3));ListNode l2 = new ListNode(5);l2.add(new ListNode(6));l2.add(new ListNode(4));ListNode listNode = new AddTwoNumbers().addTwoNumbers(l1, l2);System.out.println(listNode.val);while (listNode.next != null) {System.out.println(listNode.next.val);listNode = listNode.next;}}
}class ListNode {int val;ListNode next;ListNode(int x) {val = x;}public void add(ListNode next) {ListNode last = getLast(this);last.next = next;}private ListNode getLast(ListNode next) {while (next.next != null) {return getLast(next.next);}return next;}
}
原题地址
https://leetcode.com/problems...
作者
本文作者麻酱
,欢迎讨论,指正和转载,转载请注明出处。
如果兴趣可以关注作者微信订阅号:码匠笔记
每日一则 LeetCode: Add Two Numbers相关推荐
- LeetCode Add Two Numbers II(栈)
问题:给出两个链表表示的整数,求其和 思路:因为链表的第一个结点是最高位,最后一个结点是最低位.先将两个链表放入两个栈中.然后从两个栈中取出元素,从低到高位相加. 具体代码参考: https://gi ...
- LeetCode:Add Two Numbers
题目链接 You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- [LeetCode] Add Two Numbers
题目链接: https://oj.leetcode.com/problems/add-two-numbers/ 问题: You are given two linked lists represent ...
- leetcode:Add Two Numbers(java)
package Leetcode;/*** 题目:* You are given two non-empty linked lists representing two non-negative in ...
- [LeetCode] Add Two Numbers(stored in List)
首先,演示一个错误的reverList 1 class Solution { 2 public: 3 ListNode* reverse(ListNode* root) 4 { 5 if(NULL = ...
- LeetCode Add Two Numbers
题意:链表加法 代码如下: class Solution {ListNode addTwoNumbers(ListNode l1, ListNode l2){ListNode cur1 = l1, c ...
- leetcode add Two Numbers
部分 conditional operators ?:写的statements 在有的编译器下能通过,有的可能通不过 base operand of '->' has non-pointer ...
- LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法
题目地址:Add Two Numbers II - LeetCode You are given two non-empty linked lists representing two non-neg ...
- [Leetcode] 445. Add Two Numbers II
问题: https://leetcode.com/problems/add-two-numbers-ii/#/description 思路:该题与"415. Add Strings" ...
最新文章
- C++实现二分查找(递归方法和非递归方法)
- 分享Kali Linux 2017年第24周镜像文件
- python从入门到项目实战李兴华网盘_贺胜军Python轻松入门到项目实战【经典完整版】...
- 深度学习-机器学习(神经网络的应用 上)
- P8215-[THUPC2022 初赛]分组作业【网络流】
- Windows Live Writer 2012离线发布WP文章教程
- 自动驾驶路径规划论文解析(6)
- 零碎技术栈01_UML画图分析
- C#中ManualResetEvent用法总结
- bom树形结构 表设计_按树型显示BOM的结构
- 贝叶斯(三)先验分布的确定
- java项目里bean文件夹_JavaBean的class文件必须放在WEB-INF文件夹中。()
- 中国冰淇淋市场深度评估及发展趋势预测报告(2022版)
- 电脑上的记事本便签纸怎么用
- UE5中置人利用iphone驱动虚拟人面部
- 华为A1路由器设置虚拟服务器,华为a1路由器wifi定时加速功能的详细操作设置方法...
- 天津理工大学计算机学院绩点,天津理工大学花宇杰:平均绩点4.0你该这般青春昂扬...
- 常用小波基函数以及多尺度多分辨率的理解1
- Spring框架核心思想
- k8s containerd集群配置安装完整踩坑教程
热门文章
- php正则表达式判断url,判断url的正则表达式
- LineatLayout设置背景为.9图后产生位移
- (004)RN开发VSCode调试ReactNative项目
- mysql数据库--数据的增删改
- 微信开发:微信js_sdk 分享,前端部分(二)
- A Horrible Poem(bzoj 2795)
- 【日志】2011.12.24
- 在centos上,oracle数据库更改IP后无法启动监听,解决方法
- JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter
- 解决 Iframe跨域session 丢失问题