Leetcode2.两数相加——简洁易懂
> 简洁易懂讲清原理,讲不清你来打我~
输入两个链表,相同位置相加,进位给下一个位置,输出相加后的链表
![在这里插入图片描述](https://img-blog.csdnimg.cn/f43b7c845c334f23b959bb4694f08b97.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/a352ab90fcfb4a408474475804efb83a.png)
> 模拟法
while(l1||l2)同时遍历两个链表,相同位置相加,个位数产生新节点,进位留给下一个while。
head和tail先指向第一个新节点,之后tail随着while生成的新节点扩展新链表。
较短链表到空节点时值当做0,while结束后检测carry
```cpp
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* head=nullptr,*tail=nullptr;
int carry=0;
while(l1||l2){
int sum=(l1?l1->val:0)+(l2?l2->val:0)+carry;
if(!head){
head=tail=new ListNode(sum%10);
}
else{
tail->next=new ListNode(sum%10);
tail=tail->next;
}
carry=sum/10;
if(l1)l1=l1->next;
if(l2)l2=l2->next;
}
if(carry)tail->next=new ListNode(carry);
return head;
}
};
```
> 喜欢简洁易懂还能讲清楚原理博客的小伙伴就关注关注这个非常高产的博主呀,下次再会~
最新文章
- java中集合的使用
- Atitit 词法分析器的设计最佳实践说明attilax总结
- nodejs项目在webstorm里进行debug的设定
- 【C#】第1章 VS2015中C#6的新特性
- mvc json post执行顺序
- amaze UI的使用
- C++函数传值调用
- c#打印记忆功能
- file_get_contents和curl对于post方式的解决办法
- java 线程方法 ---- wait()
- JavaScript中new实现原理
- JAVA自学笔记10
- vue2.0中使用sass
- Centos下添加用户并赋权
- Join 具体用法
- Python中的列表解析和生成器表达式
- 使用自定义的Adapter来设置ListView的内容
- NetBpm 测试篇(3)
- php 截取字符串指定长度
- solr4.2增量索引之同步(修改,删除,新增)--转载
热门文章
- Python_Selenium之浏览器封装_去掉浏览器受到自动化控制横条显示及去掉是否记住密码弹窗
- python常识系列20-->;python利用xlutils修改表格内容
- java后端知识点梳理——web安全
- 由一次PasswordBox密码绑定引发的疑问 --->; WPF中的附加属性的定义,以及使用。
- Spring Cloud Gateway简单入门,强大的微服务网关
- Python3中列表、字典、元组、集合的看法
- 干货!MySQL 的 InnoDB 存储引擎是怎么设计的?
- Air530Z GPS/北斗定位模块_设计指导手册_V1.2
- java并发编程实战之线程安全性(一)
- NOIP模拟测试10「大佬·辣鸡·模板」