给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。-笔试面试资料
这是qklbishe.com第5147 篇笔试面试资料
提供答案分析,通过本文《给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param f1 ListNode类
* @param f2 ListNode类
* @return ListNode类
*/
ListNode* addTwoNumbers(ListNode* f1, ListNode* f2) {
// write code here
ListNode* head = new ListNode(0);
ListNode* cur = head;
bool fu = false;
while(f1&&f2)
{
int sum = f1->val + f2->val;
if(fu) {sum++;fu= false;}
if(sum>=10) {sum = sum%10; fu=true;}
cur->next = new ListNode(sum);
cur = cur->next;
f1 = f1->next;
f2 = f2->next;
}
ListNode* temp= nullptr;
if(!f2&&!f1&&fu) {cur = new ListNode(1);return head->next;}
temp = f1==nullptr? f2:f1;
while(temp)
{
int sum = temp->val;
if(fu) {sum++;fu=false;}
if(sum>=10) {sum=sum%10;fu=true;}
cur->next = new ListNode(sum);
cur = cur->next;
temp = temp->next;
}
if(fu) {cur->next = new ListNode(1);}
return head->next;
}
};
文章部分来自互联网,侵权联系删除
www.qklbishe.com
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。-笔试面试资料