Leetcode热门100之两数相加
问题描述:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
代码:
初始代码:
class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* l3 = new ListNode();ListNode* node = l3;int flag = 0;while(l1 != NULL && l2 != NULL){int tmp = l1->val + l2->val + flag;node->val = tmp % 10;if(tmp >= 10) {flag = 1;}else flag = 0;if(l1->next != NULL || l2->next != NULL || flag == 1){ListNode* nxt = new ListNode();node->next = nxt;node = node -> next;}else node->next = NULL;l1 = l1->next;l2 = l2->next;}if(l1 != NULL){node->val = l1->val + flag;node->next = NULL;}if(l2 != NULL){node->val = l2->val + flag;node->next = NULL;}if (flag == 1){node->val = flag;node->next = NULL;}return l3;}
};
改进代码:
class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* l3;ListNode* node = new ListNode();l3 = node;int tmp=0;while(l1 || l2){if(node->next){node = node->next;//解决了无进位时新节点存0造成结果错误的问题}if(l1){tmp += l1->val;l1 = l1->next;//指针移动要考虑当前指针是否为空 }if(l2){tmp += l2->val;l2 = l2->next;}node->val = tmp % 10;tmp /= 10;//相当于进位,直接应用到下一次求和运算中,不需要额外保存node->next = new ListNode();}if(tmp){node->next->val = tmp;node->next->next = NULL;}else node->next = NULL;return l3;}
};
改进参考http://reckful.studio/2017/11/07/LeetCode/LeetCode%200002%20-%20Add%20Two%20Numbers/
待解决:
c++不用释放无用节点空间吗?
Leetcode热门100之两数相加相关推荐
- LeetCode第二题:两数相加(Add Two Numbers)
LeetCode第二题:两数相加(python,java) You are given two non-empty linked lists representing two non-negative ...
- leetCode刷题 2. 两数相加
原题链接: leetcode-cn.com/problems/ad- 题目描述 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你 ...
- leetcode链表中的两数相加问题
2. 两数相加 找出两个链表中较长的链表,原地修改后,作为最后的返回结果 两个链表从前往后遍历,考虑进位,直到短链表结束. 将长链表数值放入结果(考虑进位). 考虑是否需要额外增加一个结点来放进位 c ...
- 【LeetCode每周算法】两数相加
题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-two-numbers 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是 ...
- 力扣热门100题——两数之和(最全解法)
1.两数之和 1.问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- LeetCode(2)——两数相加(JavaScript)
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
- 学渣的刷题之旅 leetcode刷题 2. 两数相加
给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以 ...
- LeetCode(Java) 两数相加
题目描述 给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是百位数-),求这个两个数的和,结果也用链表表示. 输入:(2 -> 4 -> ...
- leetcode刷题 2.两数相加
解法 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() ...
- 【LeetCode笔记】2. 两数相加(JAVA、链表)
文章目录 题目描述 代码 题目描述 解法:直接用两个链表构造出第三个链表即可 注意点:进位carry.进位的情况有几种,都要考虑上. (其实感觉这道题不是很难,挺直观的) 代码 时间复杂度:O(max ...
最新文章
- Nat. Genet. | 基于遗传学主导的方法定义免疫相关性状的药物靶标
- python是不是特别垃圾-python垃圾回收机制
- img=img%3e128 matlab,Matlab中一般的数值计算和使用
- android webview 重定向 goback,Android WebView 网址重定向影响 goBack
- JavaScript HTML DOM
- UVA 1611 Crane
- 《java入门第一季》之面向对象(static关键字内存图解)
- QQ群下载解除限速小技巧【提高千倍不止】【无需会员】
- 【数据结构06】二叉平衡树(AVL树)
- 西门子G120C变频器中的参考速度+转速给定原理分析
- 2019保定中考计算机时间安排,2019年保定中考考试时间安排,保定中考考试科目时间安排表...
- 苹果手机怎么投屏王者荣耀
- 使用usb tplink无线网卡搭建无线热点AP
- ASP版微信分享JS-SDK代码
- 五常大米引入蚂蚁金服区块链,从大米“出生”就开始“验明正身”
- 计算机老师新年贺卡祝福语,老师新年贺卡祝福语
- 【解题报告】openjudge Freda的越野跑 数据结构与算法mooc 内排序
- 深圳买房负担全球第一:记得在泡沫破灭前把房子卖掉
- [转] 给土鳖装上鹰的翅膀和眼睛后会怎么样?
- simulink实现他励直流电动机减弱磁通调速仿真
热门文章
- 无人机和地面三维激光扫描仪在1:500城市基本地形图测绘中的应用
- JsonMappingException: Problem deserializing 'setterless' property '': get method returned null
- 最难忘的一节计算机课,最让我难忘的一节课作文「共5篇」
- 软件测试面试两分钟自我介绍
- C++入门基础(上)
- java编写时间流逝_JAVA日期时间类如何使用
- 复杂网络盘传播搜索关键字
- Android桌面插件宽度,android 屏幕适配插件
- HTML动漫设计公司响应式网站模板期末大作业0023
- 服务器的显示器无信号怎么解决办法,显示器无信号怎么办?显示器无信号解决办法大全...