From 42103f13256e18a604cab91f1b350ed46e675a45 Mon Sep 17 00:00:00 2001 From: Lam Haoyin Date: Fri, 11 Mar 2022 09:23:15 +0800 Subject: [PATCH] add: 220310 [cpp] --- cpp/2203/220310.cpp | 35 +++++++++++++++++++++++++++++++++++ cpp/2203/CMakeLists.txt | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 cpp/2203/220310.cpp diff --git a/cpp/2203/220310.cpp b/cpp/2203/220310.cpp new file mode 100644 index 0000000..7355c5e --- /dev/null +++ b/cpp/2203/220310.cpp @@ -0,0 +1,35 @@ +#include + +/** + * Definition for singly-linked list. + */ +struct ListNode { + int val; + ListNode* next; + + explicit ListNode(int x = 0, ListNode* next = nullptr) : val(x), next(next) {} +}; + +class Solution { +public: + static ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { + if (!l1 || !l2) + return l1 ? l1 : l2; + + int cin = (l1->val + l2->val) / 10; + ListNode* ret = new ListNode((l1->val + l2->val) % 10); + ListNode* ptr = ret; + + for (ListNode* ptr1 = l1->next, * ptr2 = l2->next; ptr1 || ptr2; ) { + int cur = cin + (ptr1 ? l1->val : 0) + (ptr2 ? l2->val : 0); + ptr = ptr->next = new ListNode(cur % 10, nullptr); + cin = cur / 10; + ptr1 = ptr1 ? ptr1->next : nullptr; + ptr2 = ptr2 ? ptr2->next : nullptr; + } + + if (cin) + ptr->next = new ListNode(cin, nullptr); + return ret; + } +}; diff --git a/cpp/2203/CMakeLists.txt b/cpp/2203/CMakeLists.txt index 7dd0413..cb64caf 100644 --- a/cpp/2203/CMakeLists.txt +++ b/cpp/2203/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2203) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2203 220310-CN.cpp) +ADD_EXECUTABLE(2203 220310.cpp)