我是靠谱客的博主 陶醉白昼,最近开发中收集的这篇文章主要介绍程序员面试金典:链表求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

链表求和

    • 题目描述
    • 我的解题

题目描述

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

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

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

我的解题

模拟加法

/**
* 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) {
ListNode *p = l1;
int tmp=0, c=0;
while(l1->next!=nullptr && l2->next!=nullptr)
{
tmp=l1->val+l2->val+c;
c = tmp/10;
l1->val = tmp%10;
l1=l1->next;l2=l2->next;
}
tmp=l1->val+l2->val+c;
c = tmp/10;
l1->val = tmp%10;
if(l2->next!=nullptr)
{
l1->next=l2->next;
l1=l1->next;
while(c!=0)
{
tmp=l1->val+c;
c=tmp/10;
l1->val = tmp%10;
if(l1->next==nullptr) break;
l1=l1->next;
}
}
if(l1->next!=nullptr)
{
l1=l1->next;
while(c!=0)
{
tmp=l1->val+c;
c=tmp/10;
l1->val = tmp%10;
if(l1->next==nullptr) break;
l1=l1->next;
}
}
if(c==1)
{
ListNode *node = new ListNode(1);
l1->next = node;
}
return p;
}
};

执行用时 :40 ms, 在所有 C++ 提交中击败了32.35%的用户
内存消耗 :71.3 MB, 在所有 C++ 提交中击败了100.00%的用户

最后

以上就是陶醉白昼为你收集整理的程序员面试金典:链表求和的全部内容,希望文章能够帮你解决程序员面试金典:链表求和所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部