我是靠谱客的博主 光亮季节,最近开发中收集的这篇文章主要介绍力扣 面试题 02.05. 链表求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给定两个用链表表示的整数,每个节点包含一个数位。

这些数位是反向存放的,也就是个位排在链表首部。

编写函数对这两个整数求和,并用链表形式返回结果。

示例:

输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912
进阶:思考一下,假设这些数位是正向存放的,又该如何解决呢?

示例:

输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
输出:9 -> 1 -> 2,即912

/**
* 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) {
auto p1=l1;
auto p2=l2;
int sum=0;
ListNode* phead=new ListNode(0);
auto p=phead;
while(p1||p2){
if(p1==NULL){
ListNode* w=new ListNode((p2->val+sum)%10);
sum=(sum+p2->val)/10;
p->next=w;
p=p->next;
}
else if(p2==NULL){
ListNode* w=new ListNode((p1->val+sum)%10);
sum=(sum+p1->val)/10;
p->next=w;
p=p->next;
}
else{
int x1=p1->val;
int x2=p2->val;
int x=(x1+x2+sum)%10;
sum=(x1+x2+sum)/10;
ListNode* w=new ListNode(x);
p->next=w;
p=p->next;
}
if(p1)
p1=p1->next;
if(p2)
p2=p2->next;
}
if(sum>0){
ListNode* w=new ListNode(1);
p->next=w;
p=p->next;
}
return phead->next;
}
};

最后

以上就是光亮季节为你收集整理的力扣 面试题 02.05. 链表求和的全部内容,希望文章能够帮你解决力扣 面试题 02.05. 链表求和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部