* Definition for singly-linked list.
* ListNode(int x) : val(x), next(NULL) {}
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
auto ret = (ListNode*)nullptr;
while (!s1.empty() || !s2.empty() || carry != 0) {
auto v = v1 + v2 + carry;
auto tmp = new ListNode(v % 10);
// 此处若返回而非传入vector,跑完所有测试用例多花8ms
void toStack(const ListNode* l, vector<int>& ret) {
// 逆置,相加,再逆置。跑完所有测试用例比第一种解法少花4ms
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
auto rl1 = reverseList(l1);
auto rl2 = reverseList(l2);
auto ret = add(rl1, rl2);
ListNode* reverseList(ListNode* head) {
ListNode* add(ListNode* l1, ListNode* l2) {
while (l1 != nullptr || l2 != nullptr || carry != 0) {
carry += (l1 == nullptr ? 0 : l1->val) + (l2 == nullptr ? 0 : l2->val);
auto temp = new ListNode(carry % 10);
l1 = l1 == nullptr ? nullptr : l1->next;
l2 = l2 == nullptr ? nullptr : l2->next;