Add to numbers
来源:互联网 发布:上海知金教育 编辑:程序博客网 时间:2024/05/29 18:01
题目:
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Subscribe to see which companies asked this question.
class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { 解析:首先我们先判断我们建立的两个链表是否为空的链表,如果l1为空的,那么返回l2;同理,l2为空时返回l1
if(l1 == NULL or l2 == NULL)
if(l1 == NULL)
return l2;
else
return l1;
int b = 0; 解析: 建立b为进位的变量在下面方便使用。
ListNode *a1 = l1, *a2 = l2, *p1 = NULL;
while(a1 != NULL) 解析:我们是while(a1 != NULL),所以要始终保持a1不为空,如果a1为空则跳出。
{ val1和val2是l1和l2里面的一个个的值,他们的下标相同,所以要相加。
int val1 = a1->val; //val1为a1中的值
int val2;
if(a2 == NULL){ //如果a2 为空的话,a2 = 0;否则val2表示a2中的值。
val2 = 0;
}
else{
val2 = a2->val;
}
if(val1 + val2 + b > 9) 解析:如果val1和val2在加上进位变量的和大于9,表示需要进位,这时,变量b由0变为1;带入下一个val1和val2
{ 的计算之中,而且计算出来的结果只要求其个位即可,所以用%10来表示。
a1->val = (val1 + val2 + b) % 10;
b = 1;
}
else
{
a1->val = val1 + val2 + carry; 解析:当然,如果不大于9,则进位还为0.
b = 0;
}
if(a1->next == NULL && a2)
{
a1->next = a2->next; 解析:如果a1的下一个节点为空的话,那么将a2的下一个节点赋值给a1的下一个节点,a2的下一个节点为空,
a2->next = NULL; 因为我们上面的while(a1 !=NULL)(上面有强调)
}
p1 = a1; 解析:最后的结果赋值给p1,然后a1 ,a2进入下一个节点
a1 = a1->next;
if(a2 !=NULL){
a2 = a2->next;
}
}
if(b == 1) 解析:如果最后的进位变量b为1的话,表示相比于原来的长度要多了一位,所以要从新添加一个新的节点newNode。
{
ListNode * newNode = new ListNode(1);
p1->next = newNode;
}
return l1;
}
};
- Add to numbers
- Add to numbers
- How to add row numbers to DataGridView
- leetcode add to numbers python实现
- 【LaTeX】How To Add Page Numbers
- (链表) Add to List 2. Add Two Numbers
- leetcode129~Sum Root to Leaf Numbers Add to List
- Leetcode--Add to List 201. Bitwise AND of Numbers Range
- Leetcode Add to List 628. Maximum Product of Three Numbers
- [Leetcode] 2.Add Two Numbers(List To Long,模拟)
- Add two numbers & Add binary
- LeetCode: Add Two Numbers
- Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- Add Two Numbers
- npm模块之http-proxy-middleware使用教程(译)
- SpannableStringBuilder设置TextView文字格式(颜色、背景色、下划线、删除线等)
- WordPress 模板层次详细介绍
- 历届试题 带分数
- button居中的方法之一
- Add to numbers
- VS无法正常加载Wpf后台刷新ui的自定义控件
- 贪吃蛇c++ 乱写的
- 将本地项目托管到GitHub上
- 设计一个程序输入两个日期计算相隔多少天,或计算一个日期加上间隔后的日期。
- HDU 2084 数塔【dp(递推)+(记忆化)】
- 在IOS中嵌套H5页面发生空白的问题
- MySQL数据库的函数
- python实现线性表顺序存储的插入操作