java代码表示非空链表整数_Leetcode: Topic 2 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的.......
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 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的.......相关推荐
- leetcode C++ 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数
一.C++ ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *resList = new ListNode(-1);resL ...
- (C语言)从键盘输入输入一个不大于5位的整数,判断位数,并逆序输出
@[TOC]( (C语言)从键盘输入输入一个不大于5位的整数,判断位数,并逆序输出 #include <stdio.h> void main() {int n,a,b,c,d,e,m;pr ...
- Tricks(四十三)—— 逆序的方式访问一个 list
我们知道对于一 range,只可产生递增的等差数列(默认公差为1,所谓公差也即步长). 那么我们该如何通过 range(建立索引的方式)逆序的访问一个 list 呢? l = [1, 2, 3] fo ...
- java 判断手机访问_下面java代码判断是手机访问还是PC访问什么地方出错了,手机跳转不到制定页面,等待解答...
最近在做一个项目,要在判断用户是否是通过手机访问网站的,如果是手机访问网站跳到一个登录页面,如果是用户用电脑访问网站跳到另外一个登录页面.我写了以下代码,但是用手机访问网站的时候,跳转不到制定页面,请 ...
- 输入一个自然数判断他是几位数,并逆序输出C语言详解
例如输入123456789:输出987654321.是一个9位数 #include <stdio.h>int main() {int x,reverse=0,count=0,temp;pr ...
- -9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)
题目来源于leetcode第二题两数相加. 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相 ...
- LeetCode 2. 两数相加(单链表反转)
题目链接:https://leetcode-cn.com/problems/add-two-numbers/ 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储 ...
- leetcode —— 2. 两数相加 (对于链表更新的细节)
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
- 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表
链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...
- 用java将输入的整数逆序输出_输入一个整数判断这个整数是几位数,并把这个整数逆序输出! | 学步园...
import java.util.Scanner; /** * * 问题:输入一个整数判断这个整数是几位数,并把这个整数逆序输出! * * @author Administrator * * 程序如下 ...
最新文章
- 2019新面貌:博客改版计划进行中!
- linux cp -ip,linux cp命令
- ggplot2绘图如何根据一个变量即区分颜色又区分深浅?
- /etc/mtab must be a symlink to /proc/mounts
- dos 批量copy文件
- TeamViewer订阅版上线,正式开售!
- 寄生虫技术计算机软件怎么样,2019寄生虫软件-某寄生虫软件分析
- 抱米花-豆丁文档下载器 20100529
- APP如何上架App Store?
- face_recognition库的安装以及学习
- Git用户手册--Git 内部原理
- 一、区块链技术与应用-密码学原理
- M1 pod install CocoaPod 报错解决办法
- Github官网无法访问问题
- 游戏开发论坛_国内游戏开发站点与论坛
- Taro之百度小程序一键登录埋点统计
- 【题解】【PTA-Python题库】第6章-2 一帮一 (15 分)
- Hexo系列(五) 撰写文章
- 上证指数计算方法、指数计算修正、因素,深证综合指数
- VC++ 开发PC版微信,CWeixin 类
热门文章
- .net session超时设置 sessionState的相关属性
- 吴恩达教授机器学习课程笔记【七】- Part 7 最优模型选择
- 从信号转换角度研究血压(波形)预测的相关论文
- 自动驾驶之多传感器融合-硬件篇(激光雷达)
- 3D Bounding Box Estimation Using Deep Learning and Geometry
- 设计模式-适配器模式(Adapter)
- for循环提高内存访问效率的做法
- JS执行一次任务与定期任务与清除执行
- spring3: AOP 之 6.2 AOP的HelloWorld
- linux 查看数据库和表