#include<iostream>
using namespace std;
#include<list>
//Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) { val = x; }
/* ListNode(int x) : 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) {
ListNode *pre = new ListNode(0);
ListNode *cur = pre;
int carry = 0;
while (l1 != NULL || l2 != NULL){
int x = l1 == NULL ? 0 : l1->val;
int y = l2 == NULL ? 0 : l2->val;
int sum = x + y + carry;
carry = sum / 10;
cur->next = new ListNode(sum % 10);
cur = cur->next;
if (l1 != NULL) {
l1 = l1->next;
}
if (l2 != NULL) {
l2 = l2->next;
}
}
if (carry == 1) {
cur->next = new ListNode(1);
}
return pre->next;
}
};
ListNode* NUM(char num[], int size) {
ListNode *L1 = new ListNode(NULL);
ListNode *pre = L1;
for (int i = 0; i < sizeof(num); i++)
{
ListNode *p = new ListNode(NULL);
p->val = num[i];
pre->next = p;
pre = p;
p->next = NULL;
}
return L1->next;
}
void print(ListNode *L) {
for (int i = 0; i < 3; i++)
{
cout << L->val << endl;
L = L->next;
}
}
void test01() {
char num1[] = { 2,4,3 };
char num2[] = { 5,6,4 };
int m_size1 = sizeof(num1);
int m_size2 = sizeof(num2);
ListNode *L1 = NUM(num1, m_size1);
ListNode *L2 = NUM(num2, m_size2);
//print(L2);
Solution S;
ListNode *L3 = S.addTwoNumbers(L1, L2);
print(L3);
}
int main()
{
test01();
system("pause");
return 0;
}
Leetcode刷题-002两数相加
于 2022-04-17 19:51:24 首次发布