使用迭代的方式

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. Prometheus神器之监控K8s集群

    Prometheus 简介 Prometheus是SoundCloud开源的一款开源软件.它的实现参考了Google内部的监控实现,与源自Google的Kubernetes结合起来非常合适.另外相比i ...

  2. PHP-内嵌foreach的巧妙优化

    1.没有想好使用什么话题做开场白,不说多废话直接上代码了. 这是tp5.1的api接口里的代码,$user_list 是二维数组只有 1104一维数组数据   $friend_list 也是二维数组, ...

  3. Vue router-link路由不同的写法,不一样的效果

    我想要的路径:http://localhost:8080/#/main/hato/realtime/eventDetail/238 情况一:未进行路由配置:  {      path: 'eventD ...

  4. RocketMQ多master迁移至多master多slave模式

    一.项目背景 由于当前生产环境RocketMQ机器使用年限较长,已经过保,并且其中一台曾经发生过异常宕机事件.并且早期网络规划较乱,生产.开发.测试等网络没有分开,公司决定对当前网络进行规划,区分各个 ...

  5. Spring源码系列 — Bean生命周期

    前言 上篇文章中介绍了Spring容器的扩展点,这个是在Bean的创建过程之前执行的逻辑.承接扩展点之后,就是Spring容器的另一个核心:Bean的生命周期过程.这个生命周期过程大致经历了一下的几个 ...

  6. [IDA] Oops! internal error 40343 occured.

    问题描述: 解决方案: 安装 IDA 时,其路径下不要出现中文.  

  7. Winform 美化

    首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件. 将主窗体FormBorderStyle更改为None,这样就得到了 ...

  8. SQL server已经设置为单用户模式,Sql server还原失败数据库正在使用,无法获得对数据库的独占访问权

    如果已经设置为单用户模式,还是报这个错误的话,就按照一下SQL执行就

  9. 表单验证如何让select设置为必选

    <select class="custom-select mr-sm-2" name="province" id="province" ...

  10. opencv::KMeans方法概述

    KMeans方法概述 . 无监督学习方法 . 分类问题,输入分类数目,初始化中心位置 . 硬分类方法,以距离度量 . 迭代分类为聚类    //---------- //迭代算法的终止准则 //--- ...