本文共 1007 字,大约阅读时间需要 3 分钟。
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
来源:力扣(LeetCode)
链接:需要注意的是,要维护一个进位 carry!
/** * 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* res = new ListNode(-1); // 定义头节点 ListNode* iter = res; // 定义工作迭代节点 int carry = 0; while(l1 != nullptr || l2 != nullptr || carry != 0){ if(l1 != nullptr){ carry += l1 -> val; l1 = l1 -> next; } if(l2 != nullptr){ carry += l2 -> val; l2 = l2 -> next; } iter -> next = new ListNode(carry % 10); iter = iter -> next; carry /= 10; } return res -> next; // 注意要舍弃头节点! }};```
转载地址:http://kqwki.baihongyu.com/