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.
Example
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
题目意思看例子。从头往尾相加,超过10就要往后进位。除了下面代码的方法,也可以设置一个flag,表示要不要进位。而下面代码是直接将每次的和留到下一次,让下一次自己判断。效果一样。
这题因为给你的是链表,所以如果想把链表转成整数,然后相加,可能会造成溢出。所以此方法行不通。
仔细观察例子,其实就是从头往尾遍历,相加,当两个节点的和没有超过10,那就直接形成新节点,新节点的值就是这个值。如果相加的和超过了10,这是新节点的值应该就是这个和%10(如6+8=14,新节点的值就是4),此时还需要进位,进位给后一个节点(sum/10)。这里用sum表示两个数的和,同时这个和还要加上前一个的进位(就是前一个和/10,)。
/**
* 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) {
if(l1==null||l2==null) return null;
ListNode res=new ListNode(0);
ListNode p=res;
int carry=0;
while(l1!=null||l2!=null){
int sum=carry;
if(l1!=null){ sum+=l1.val;l1=l1.next;}
if(l2!=null) {sum+=l2.val;l2=l2.next;}
p.next=new ListNode(sum%10);
p=p.next;
carry=sum/10; }
if(carry!=0) p.next=new ListNode(carry);
return res.next;
}
}
add two numbers(将两个链表相加)的更多相关文章
- 20.Add Two Numbers(两个链表的和)
Level: Medium 题目描述: You are given two non-empty linked lists representing two non-negative integer ...
- [LeetCode] 445. Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- 2. Add Two Numbers[M]两数相加
题目 You are given two non-empty linked lists representing two non-negative integers. The digits are s ...
- [LeetCode] Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- leetcode-2 Add Two Numbers 计算两个对应的列表和问题
1.问题描写叙述: You are given two linked lists representing two non-negativenumbers. The digits are sto ...
- leetcode 题解 Add Two Numbers(两个单链表求和)
题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...
- [leetcode]445. Add Two Numbers II 两数相加II
You are given two non-empty linked lists representing two non-negative integers. The most significan ...
- 445 Add Two Numbers II 两数相加 II
给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表.你可以假设除了数字 0 之外,这两个数字都不会以零开头.进阶:如果输入链表 ...
- LeetCode 445. Add Two Numbers II (两数相加 II)
题目标签:Linked List 题目给了我们两个 数字的linked list,让我们把它们相加,返回一个新的linked list. 因为题目要求不能 reverse,可以把 两个list 的数字 ...
随机推荐
- iOS中 CoreGraphics快速绘图(详解) 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 第一步:先科普一下基础知识: Core Graphics是基于C的API,可以用于一切绘图操作 Core Graph ...
- Android性能优化之加快应用启动速度
应用的启动 启动方式 通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动. ...
- matlab中 mcc、mbuild和mex命令详解
先简单的说说mcc.mbuild和mex到底怎么回事: mcc将M文件转换成C/C++文件和相应的MEX包裹文件(需要Matlab编辑器),但在特定条件下可以自动调用mbuild或者mex mex将C ...
- UNIX环境高级编程——线程同步之读写锁以及属性
读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程.当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 互 ...
- BIP Requests Are Failing With Error "OPP Error Oracle.apps.xdo.XDOException: Error Creating Lock Fil
In this Document Symptoms Cause Solution References Applies to: BI Publisher (formerly XML P ...
- Android项目-高考作文-抽象BaseAdapter
1, 在使用baseAdapter的时候,总是有需要重复的代码如: @Override public int getCount() { return list.size(); } @Override ...
- 分布式进阶(七)Ubuntu下如何进入 Docker 容器
如何进入 Docker 容器 英文原文:How to enter a Docker container 在这篇文章里,我将讨论四种连接Docker容器并与其进行交互的方法.例子中所有的代码都可以在Gi ...
- Android学习笔记:对Android应用进行单元测试
第一步:在AndroidManifest.xml中加入如下两段代码: <manifest xmlns:android="http://schemas.android.com/ap ...
- Leetcode_27_Remove Element
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41577997 Remove Element Given a ...
- Dynamics CRM2013 1:N关系 sub-grid中的“添加现有项”和“添加新建项”功能详解
CRM2013中sub-grid的样式和2011中有了较大的变化,2013和2011界面对比如下 在2011的时候按钮是在ribbon区,1:N的父子关系实体直接点击添加新纪录就可以,但2013就不行 ...