002. Add Two Numbers
题目链接:https://leetcode.com/problems/add-two-numbers/description/
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
思路:
- 用两个结点指针p1、p2分别指向这两个链表L1、L2。
- 当p1、p2两者指向非空时将p1、p2所指向结点的值val和进位数carNum相加。即sum = p1->val + p2->val + carNum; 其中进位数carNum初始值为0。
- 更新进位数的值:carNum = sum / 10;
- 获得当前位的值:cur = sum % 10;
- 当p1 或 p2 两者指向至少有一个为空时,上一步的操作终止。对非空的链表继续进行后续操作。
编码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *p1 = l1;
ListNode *p2 = l2; ListNode *pHead = new ListNode(-);
ListNode *p = nullptr; int carNum = ; // 进位数 while (nullptr != p1 && nullptr != p2)
{
int sum = p1->val + p2->val + carNum;
carNum = sum / ; // 求进位数
int cur = sum % ; // 当前位的数字 ListNode *pTemp = new ListNode(cur); if (p == nullptr)
{
p = pTemp;
pHead->next = p;
}
else
{
p->next = pTemp;
p = pTemp;
} p1 = p1->next;
p2 = p2->next;
} while (nullptr != p1)
{
int sum = p1->val + carNum;
carNum = sum / ;
int cur = sum % ; ListNode *pTemp = new ListNode(cur); if (p != nullptr)
{
p->next = pTemp;
p = pTemp;
} p1 = p1->next;
} while (nullptr != p2)
{
int sum = p2->val + carNum;
carNum = sum / ;
int cur = sum % ; ListNode *pTemp = new ListNode(cur); if (p != nullptr)
{
p->next = pTemp;
p = pTemp;
} p2 = p2->next;
} if (carNum != )
{
ListNode *pTemp = new ListNode(carNum);
if (p != nullptr)
{
p->next = pTemp;
p = pTemp;
}
} return pHead->next; }
};
002. Add Two Numbers的更多相关文章
- No.002 Add Two Numbers
Add Two Numbers Total Accepted: 160702 Total Submissions: 664770 Difficulty: Medium You are given tw ...
- LeetCode #002# Add Two Numbers(js描述)
索引 思路1:基本加法规则 思路2:移花接木法... 问题描述:https://leetcode.com/problems/add-two-numbers/ 思路1:基本加法规则 根据小学学的基本加法 ...
- LeetCode--No.002 Add Two Numbers
Add Two Numbers Total Accepted: 160702 Total Submissions: 664770 Difficulty: Medium You are given tw ...
- leetcode刷题: 002 Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- 【JAVA、C++】LeetCode 002 Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- 【LeetCode】002 Add Two Numbers
题目: You are given two non-empty linked lists representing two non-negative integers. The digits are ...
- 002 Add Two Numbers 链表上的两数相加
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- [Leetcode] 002. Add Two Numbers
https://leetcode.com/problems/add-two-numbers/ public class Solution { public ListNode addTwoNumbers ...
- [LeetCode] Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
随机推荐
- 磁盘阵列(RAID)
RAID 0亦称为带区集.它将两个以上的磁盘并联起来,成为一个大容量的磁盘.在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的.但是RA ...
- MariaDB(MySql)使用储存过程和随机函数插入10万条数据
))default charset =utf8; #定义一个随机切割字符串的函数 delimiter // create function randStr() ) begin ) default 'A ...
- autoprefixer 处理css3的前缀
css3书写的时候,有时需要加上前缀,比如“-webkit-*.-moz-*”等等,但可能会写的不完整或者是写错,也很麻烦,那么autoprefixer可以处理这些. autoprefixer是一个后 ...
- 【环境配置】出现:Microsoft Visual C++ 14.0 is required 的解决方案
参考blog https://download.csdn.net/download/amoscn/10399046 https://blog.csdn.net/weixin_42057852/arti ...
- abd常用命令
1.adb install -r 包名 ----------安装包,-r 替换原有apk安装 2.adb uninstall -k 包名 ---------------卸载包, ...
- Python基础之Python解释器
当我们在编写Python代码时,我们得到的是一个包含Python代码的,以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开 ...
- 删除git的远程分支
命令:$ git push origin [空格][冒号][需要删除的分支名字] git push origin :dev 删除git的凭证的方法: 控制面板\用户帐户\凭据管理器 --->普 ...
- Python中很少见的用法
print(*range(10)) # 自动解开可迭代的对象
- JAVA中随机生成确定范围内的随机数
最近工作中的一个业务需要再确定范围内取出一个随机数,网上到时搜出来一堆可以实现的方法,但是鄙人仍是理解不了,虽说已经copy方法直接完成工作了.今天抽时间整理下,希望能够帮助大家更好的理解随机数的实现 ...
- Backen-Development record 1
单例模式 在应用这个模式时,单例对象的类必须保证只有一个实例存在. 服务进程中的其他对象再通过这个单例对象获取这些配置信息.这种方式简化了在复杂环境下的配置管理. __new__实现 用装饰器实现单例 ...