В настоящее время я пытаюсь ответить на вопрос «Добавьте два числа из leetcode», мое решение, похоже, работает так, как я ожидаю, однако в тех случаях, когда требуется мой последний перенос int, он не добавляется в конец моего списка в последнем операторе if. .
В настоящее время я пытаюсь ответить на вопрос «Добавьте два числа из leetcode», мое решение, похоже, работает так, как я ожидаю, однако в тех случаях, когда требуется мой последний перенос int, он не добавляется в конец моего списка в последнем операторе if. . [code]class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int carry = 0; ListNode* ans = l1; while(l1 || l2){ if(l1 == nullptr) l1 = new ListNode(); if(l1 == nullptr && l2){ l1 -> val = (l2 -> val + carry) % 10; carry = (carry + l2 -> val) / 10; l2 = l2 -> next; }else if(l2 == nullptr && l1){ int tempL1Val = l1 -> val; l1 -> val = (l1 -> val + carry) % 10; carry = (carry + tempL1Val) / 10; }else{ int tempL1Val = l1 -> val; l1 -> val = (l1 -> val + l2 -> val + carry) % 10; carry = (tempL1Val + l2 -> val + carry) / 10; l2 = l2 -> next; } l1 = l1 -> next; }
if(carry){ l1 = new ListNode(); l1 -> val = carry; } return ans; } }; [/code] Тестовые примеры, в которых это не удалось: [code]l1 = [9,9,9,9,9,9,9] l2 = [9,9,9,9] output = [8,9,9,9,0,0,0] expected_output = [8,9,9,9,0,0,0,1]
[/code] Я проверил до и после, и новый узел действительно существует, однако он не добавляется в мой список, когда я запускаю код.