美文网首页
leetcode:2号题 两数相加

leetcode:2号题 两数相加

作者: voidFan | 来源:发表于2020-10-16 22:03 被阅读0次

两数相加

解上述题,采用同样的思路。
go实现对比c++实现,结果如下图所示:


image.png

C++实现

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        //注意:1、链表是逆序的,返回链表也是逆序
        //        按输入两链表顺序加,有进位的话,就需要在后一个节点加上。
        //      2、最后,需要保存链表头,同时还需要一个处理链表。
        ListNode *head = new ListNode(-1);
        ListNode *node = head;
        int carry = 0;
        while(l1 || l2) {
            int val1 = 0, val2 = 0;
            if (l1 != nullptr) {
                val1 = l1->val;
                l1 = l1->next;
            }
            if (l2 != nullptr) {
                val2 = l2->val;
                l2 = l2->next;
            }
            int sum = val1 + val2 + carry;
            carry = sum / 10;
            node->next = new ListNode(sum % 10);
            node = node->next;
        }
        if(carry != 0) {
            node->next = new ListNode(carry);
        }
        return head->next;
    }
};

GO实现

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    ans := new(ListNode)
    curr := ans
    carry := 0
    for (l1 != nil || l2 != nil) {
        val1,val2 := 0,0
        if l1 != nil {
            val1 = l1.Val
            l1 = l1.Next
        }
        if l2 != nil {
            val2 = l2.Val
            l2 = l2.Next
        }
        sum := val1 + val2 + carry
        carry = sum / 10
        temp := new(ListNode)
        temp.Val = sum % 10
        temp.Next = nil
        curr.Next = temp
        curr = curr.Next
    }
    if carry != 0 {
        temp := new(ListNode)
        temp.Val = carry
        temp.Next = nil
        curr.Next = temp
    }
    return ans.Next
}

相关文章

  • Python小白 Leetcode刷题历程 No.1-No

    Python小白 Leetcode刷题历程 No.1-No.5 两数之和、两数相加、无重复字符的最长子...

  • LeetCode | 2.两数相加

    这次来写一下 LeetCode 的第 2 题,两数相加。 题目描述 题目直接从 LeetCode 上截图过来,题目...

  • LeetCode算法题:两数相加

    需求 两数相加: 思路 链表是倒序存储数值,432 在链表存储是2-3-4,当求和之后,还需将值转成链表,1.根据...

  • LeetCode刷题-两数相加

    前言说明 算法学习,日常刷题记录。 题目连接 两数相加[https://leetcode-cn.com/probl...

  • LeetCode第2题题解:两数相加

    LeetCode第2题:两数相加 Ps:本系列文章只为记录自己刷LeetCode过程中的解题过程和思路。 题目来源...

  • 两数相加 II(golang)

    原题:两数相加 II 使用栈,其它与两数相加(golang)类似

  • LeetCode第二题:两数相加

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

  • leetcode第2题:两数相加

    题目描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的...

  • LeetCode刷题002:两数相加

    题目:两数相加 难度: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,...

  • leetCode题2-两数相加

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

网友评论

      本文标题:leetcode:2号题 两数相加

      本文链接:https://www.haomeiwen.com/subject/ukvtmktx.html