博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣刷题 两数相加
阅读量:30390 次
发布时间:2020-01-04

本文共 1422 字,大约阅读时间需要 4 分钟。

力扣刷题 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

在这里插入图片描述

class Solution:    def addTwoNumbers(self, l1, l2):        """        :type l1: ListNode        :type l2: ListNode        :rtype: ListNode        """        cur = ret = ListNode(0)        add = 0                while l1 or l2 or add:            val = (l1.val if l1 else 0) + (l2.val if l2 else 0) + add            add = val // 10            cur.next = ListNode(val % 10)            cur = cur.next            l1 = l1.next if l1 else None            l2 = l2.next if l2 else None                return ret.next

对应的C++版本:

class Solution {
public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* dumHead = new ListNode(0); ListNode* p = dumHead; int add = 0; while (l1 || l2 || add) {
int val = get_value(l1) + get_value(l2) + add; add = val / 10; p->next = new ListNode(val % 10); p = p->next; l1 = get_p(l1); l2 = get_p(l2); } ListNode* ret = dumHead->next; delete dumHead; return ret; }private: int get_value(ListNode* l) {
if (l != nullptr) return l->val; else return 0; } ListNode* get_p(ListNode* l) {
if (l != nullptr) return l->next; return nullptr; }};

转载地址:http://hvbhbu.baihongyu.com/

你可能感兴趣的文章