使用迭代的方式

class Solution{
public:
ListNode *addTwoNumbers(ListNode* l1,ListNode *l2)
{
ListNode *res=new ListNode(-);
ListNode *p=res;
int temp=,increase=;
while(l1 && l2)
{
temp=l1->val+l2->val+increase;
ListNode *r = new ListNode(-);
if(temp>=)
increase=;
else
increase=;
r->val=temp%;
res->next=r;
res=res->next;
l1=l1->next;
l2=l2->next;
}
while(l1)
{
ListNode *r = new ListNode(-);
temp=l1->val+increase;
if(temp>=)
increase=;
else
increase=;
r->val=temp%;
res->next=r;
res=res->next;
l1=l1->next;
} while(l2)
{
ListNode *r = new ListNode(-);
temp=l2->val+increase;
if(temp>=)
increase=;
else
increase=;
r->val=temp%;
res->next=r;
res=res->next;
l2=l2->next;
}
if(increase==)
{
ListNode *r = new ListNode();
res->next=r;
}
return p->next; } };

其实还有更简洁的书写方式,我上面是用了三个while,其实一个while就够了,如下,更加优雅,摘自Leetcode,侵删

/**
* 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 DummyHead = new ListNode(); // 初始化一个伪头结点
ListNode pre = DummyHead; // 用 pre 记录要创建并赋值的节点的前一个节点
int Carry = ; // 初始化进位
while( l1 != null || l2 != null || Carry > ) // 继续相加的条件是 链表对应位置中存在不为空的节点 或 有进位
{
int sum = ((l1 != null) ? l1.val : ) + ((l2 != null) ? l2.val : ) + Carry; //计算对应位的和(需要加上进位)
Carry = sum / ; // 记录下次相加的进位
pre.next = new ListNode(sum % ); // 创建并赋值下个节点
pre = pre.next; // pre 移动到新创建的节点位置上,便于下一轮继续创建新节点 /* 当节点不为空的时候,指向它的下一个节点(之前判断的是其后节点是否为空,导致超时,因为与while的条件不匹配) */
if(l1 != null)
l1 = l1.next;
if(l2 != null)
l2 = l2.next;
}
return DummyHead.next; // 返回有数据的第一个节点,也就是伪节点的下一个节点
}
}

leetcode2. 两数相加的更多相关文章

  1. [Swift]LeetCode2. 两数相加 | Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  2. LeetCode2.两数相加 JavaScript

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  3. Leetcode2 两数相加 Python

    给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...

  4. Leetcode2.两数相加——简洁易懂

    > 简洁易懂讲清原理,讲不清你来打我~ 输入两个链表,相同位置相加,进位给下一个位置,输出相加后的链表![在这里插入图片描述](https://img-blog.csdnimg.cn/f43b7 ...

  5. Leetcode2.Add Two Numbers两数相加

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  6. LeetCode 2. 两数相加(Add Two Numbers)

    2. 两数相加 2. Add Two Numbers 题目描述 You are given two non-empty linked lists representing two non-negati ...

  7. [CareerCup] 18.1 Add Two Numbers 两数相加

    18.1 Write a function that adds two numbers. You should not use + or any arithmetic operators. 这道题让我 ...

  8. ✡ leetcode 167. Two Sum II - Input array is sorted 求两数相加等于一个数的位置 --------- java

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  9. [Swift]LeetCode445. 两数相加 II | Add Two Numbers II

    You are given two non-empty linked lists representing two non-negative integers. The most significan ...

随机推荐

  1. [Taro] taro中定义以及使用全局变量

    taro中定义以及使用全局变量 错误的姿势 // app.tsx文件中 class App extends Component { componentDidMount() { this.user = ...

  2. Codeforces Round #553 (Div. 2) C 等差数列求和 + 前缀和

    https://codeforces.com/contest/1151/problem/C 题意 有两个等差数列(1,3,5,..),(2,4,6,...),两个数列轮流取1,2,4,...,\(2^ ...

  3. 用scratch写了一个win98 界面模拟

    scratch模拟win98 玩耍,放在网上了https://kada.163.com/project/4216461-3515165.htm

  4. QDialog 设置成圆角

    void paintEvent(QPaintEvent *event) { Q_UNUSED(event); QBitmap bmp(this->size()); bmp.fill(); QPa ...

  5. Laravel5 --- QQ邮箱发送邮件

    1. 在此之前先确认QQ邮箱是否开启了POP3/SMTP服务,如果未开启则须开启 QQ邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalD ...

  6. usb设备在sysfs中的命名规范

    "root-hub的编号"-"设备(或者hub)插入的端口号"[."设备(或者hub)插入的端口号"]:"USB设备配置号&quo ...

  7. PS快速去除水印方法

    步骤 第一步:打开PS软件,鼠标左键单击左上角"文件"-"打开",选择一张图片 第二步:鼠标左键单击左边的工具栏"矩形选框工具" 第三步:鼠 ...

  8. Spring Boot整合Mybatis配置详解

    首先,你得有个Spring Boot项目. 平时开发常用的repository包在mybatis里被替换成了mapper. 配置: 1.引入依赖: <dependency> <gro ...

  9. c#的文本格式化形式展示

    假设你使用的是新版本的的c#语法 c#的格式化形式有如下几种 string text = "Hello World!"; Console.WriteLine("Hello ...

  10. 【JS】---5 JS通过事件隐藏显示元素

    JS通过事件隐藏显示元素 在开发中,很多时候我们需要点击事件,才显示隐藏元素.那如何做到页面刚开始就把标签隐藏. 有两种方法: (1) display:none    <div id=" ...