题解 | #链表相加(二)#

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

2022.0815算法第22题链表相加(二)
对链表表示的两个整数进行相加,返回一个结果链表
首先要知道倒序相加算法,将低位相加,确保进位正确,把短的链表后面的数据视为零
最后一位需要进位时单独进行判断。
首先创建头指针和尾指针,以及进位标志。
ListNode* head=nullptr,*tail=nullptr;
int carry=0;
确保当一个链表为空时仍然能够向后继续刷新,后面的视为0
对同位数字进行相加
int n1=head1?head1->val:0;
int n2=head2?head2->val:0;
int sum=n1+n2+carry;
根据sum的值,添加到新的链表中,更新尾指针。
if(!head){
    head=tail=new ListNode(sum%10);
}
else{
    tail->next=new ListNode(sum%10);
    tail=tail->next;
}
更新进位标志,并向后移动链表
carry=sum/10;
if(head1)
    head1=head1->next;
if(head2)
    head2=head2->next;
当最后一位需要进位时,这是需要进行判断。
if(carry==1)
    tail->next=new ListNode(1);
一直循环直到两个链表都为空
 while(head1||head2){
针对这个正序的链表相加,首先想到的是对链表进行反转,然后进行上述算法操作。
head1=reveList(head1);
head2=reveList(head2);
最后将得到的链表也进行反转即可。







#算法题#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
8028次浏览 74人参与
# 你的实习产出是真实的还是包装的? #
1491次浏览 37人参与
# 巨人网络春招 #
11261次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7248次浏览 39人参与
# 简历第一个项目做什么 #
31424次浏览 318人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186682次浏览 1117人参与
# 米连集团26产品管培生项目 #
5291次浏览 213人参与
# 研究所笔面经互助 #
118827次浏览 577人参与
# 重来一次,我还会选择这个专业吗 #
433189次浏览 3924人参与
# 简历中的项目经历要怎么写? #
309795次浏览 4174人参与
# 面试紧张时你会有什么表现? #
30448次浏览 188人参与
# AI时代,哪些岗位最容易被淘汰 #
63077次浏览 769人参与
# 正在春招的你,也参与了去年秋招吗? #
362963次浏览 2635人参与
# 你怎么看待AI面试 #
179634次浏览 1202人参与
# 职能管理面试记录 #
10765次浏览 59人参与
# 网易游戏笔试 #
6418次浏览 83人参与
# 腾讯音乐求职进展汇总 #
160504次浏览 1107人参与
# 校招笔试 #
468957次浏览 2960人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
7113次浏览 156人参与
# 你觉得通信/硬件有必要实习吗? #
155421次浏览 1065人参与
# 小红书求职进展汇总 #
227003次浏览 1357人参与
# 从哪些方向判断这个offer值不值得去? #
56719次浏览 357人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务