1、对于这个题目,想到的就是。。直接相加然后进位

struct ListNode

{

int val;

ListNode *next;

ListNode(int x) : val(x), next(NULL)

{

}

};

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)

{

// 注意这里其实改变了l1 l2的指向内容,此方法存在问题,建议使用第二种

// 用这个存放计算结果

ListNode* pNode = nullptr;

ListNode* pStartNode = nullptr;

int nTarg = 0;

while (l1 && l2)

{

int nValue = l1->val + l2->val + nTarg;

nTarg = nValue / 10;

ListNode* node = new ListNode(nValue % 10);

node->next = nullptr;

if (pNode)

{

pNode->next = node;

}

else

{

pStartNode = node;

}

pNode = node;

l1 = l1->next;

l2 = l2->next;

}

while (l1)

{

int nValue = l1->val + nTarg;

nTarg = nValue / 10;

ListNode* node = new ListNode(nValue % 10);

node->next = nullptr;

if (pNode)

{

pNode->next = node;

}

else

{

pStartNode = node;

}

pNode = node;

l1 = l1->next;

}

while (l2)

{

int nValue = l2->val + nTarg;

nTarg = nValue / 10;

ListNode* node = new ListNode(nValue % 10);

node->next = nullptr;

if (pNode)

{

pNode->next = node;

}

else

{

pStartNode = node;

}

pNode = node;

l2 = l2->next;

}

// 当l1 l2处理完,任存在进位的可能

if (nTarg == 1)

{

ListNode* node = new ListNode(nTarg);

pNode->next = node;

}

return pStartNode;

}

2、把上面代码优化一下

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)

{

// 注意。。我们不能改变l1 l2指针的指向内容

ListNode *p = l1, *q = l2;

// 用这个存放计算结果

ListNode* pNode = nullptr;

ListNode* pStartNode = nullptr;

int nTarg = 0;

while (p || q)

{

int nValue = nTarg;

if (p)

{

nValue += p->val;

p = p->next;

}

if (q)

{

nValue += q->val;

q = q->next;

}

nTarg = nValue / 10;

ListNode* node = new ListNode(nValue % 10);

node->next = nullptr;

if (pNode)

{

pNode->next = node;

}

else

{

pStartNode = node;

}

pNode = node;

}

if (nTarg == 1)

{

ListNode* node = new ListNode(nTarg);

pNode->next = node;

}

return pStartNode;

}

3、对于拓展。。其实很简单,我们使用2个栈,l1、l2分别压入栈s1、s2中,然后出栈计算就行了

java代码表示非空链表整数_Leetcode: Topic 2 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的.......相关推荐

  1. leetcode C++ 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数

    一.C++ ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *resList = new ListNode(-1);resL ...

  2. (C语言)从键盘输入输入一个不大于5位的整数,判断位数,并逆序输出

    @[TOC]( (C语言)从键盘输入输入一个不大于5位的整数,判断位数,并逆序输出 #include <stdio.h> void main() {int n,a,b,c,d,e,m;pr ...

  3. Tricks(四十三)—— 逆序的方式访问一个 list

    我们知道对于一 range,只可产生递增的等差数列(默认公差为1,所谓公差也即步长). 那么我们该如何通过 range(建立索引的方式)逆序的访问一个 list 呢? l = [1, 2, 3] fo ...

  4. java 判断手机访问_下面java代码判断是手机访问还是PC访问什么地方出错了,手机跳转不到制定页面,等待解答...

    最近在做一个项目,要在判断用户是否是通过手机访问网站的,如果是手机访问网站跳到一个登录页面,如果是用户用电脑访问网站跳到另外一个登录页面.我写了以下代码,但是用手机访问网站的时候,跳转不到制定页面,请 ...

  5. 输入一个自然数判断他是几位数,并逆序输出C语言详解

    例如输入123456789:输出987654321.是一个9位数 #include <stdio.h>int main() {int x,reverse=0,count=0,temp;pr ...

  6. -9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)

    题目来源于leetcode第二题两数相加. 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相 ...

  7. LeetCode 2. 两数相加(单链表反转)

    题目链接:https://leetcode-cn.com/problems/add-two-numbers/ 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储 ...

  8. leetcode —— 2. 两数相加 (对于链表更新的细节)

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

  9. 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表

    链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...

  10. 用java将输入的整数逆序输出_输入一个整数判断这个整数是几位数,并把这个整数逆序输出! | 学步园...

    import java.util.Scanner; /** * * 问题:输入一个整数判断这个整数是几位数,并把这个整数逆序输出! * * @author Administrator * * 程序如下 ...

最新文章

  1. 2019新面貌:博客改版计划进行中!
  2. linux cp -ip,linux cp命令
  3. ggplot2绘图如何根据一个变量即区分颜色又区分深浅?
  4. /etc/mtab must be a symlink to /proc/mounts
  5. dos 批量copy文件
  6. TeamViewer订阅版上线,正式开售!
  7. 寄生虫技术计算机软件怎么样,2019寄生虫软件-某寄生虫软件分析
  8. 抱米花-豆丁文档下载器 20100529
  9. APP如何上架App Store?
  10. face_recognition库的安装以及学习
  11. Git用户手册--Git 内部原理
  12. 一、区块链技术与应用-密码学原理
  13. M1 pod install CocoaPod 报错解决办法
  14. Github官网无法访问问题
  15. 游戏开发论坛_国内游戏开发站点与论坛
  16. Taro之百度小程序一键登录埋点统计
  17. 【题解】【PTA-Python题库】第6章-2 一帮一 (15 分)
  18. Hexo系列(五) 撰写文章
  19. 上证指数计算方法、指数计算修正、因素,深证综合指数
  20. VC++ 开发PC版微信,CWeixin 类

热门文章

  1. .net session超时设置 sessionState的相关属性
  2. 吴恩达教授机器学习课程笔记【七】- Part 7 最优模型选择
  3. 从信号转换角度研究血压(波形)预测的相关论文
  4. 自动驾驶之多传感器融合-硬件篇(激光雷达)
  5. 3D Bounding Box Estimation Using Deep Learning and Geometry
  6. 设计模式-适配器模式(Adapter)
  7. for循环提高内存访问效率的做法
  8. JS执行一次任务与定期任务与清除执行
  9. spring3: AOP 之 6.2 AOP的HelloWorld
  10. linux 查看数据库和表