[leetcode]445. Add Two Numbers II
[leetcode]445. Add Two Numbers IIAnalysisummmm——[每天刷题并不难。。。]You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of ...
·
[leetcode]445. Add Two Numbers II
Analysis
ummmm—— [每天刷题并不难。。。]
You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Follow up:
What if you cannot modify the input lists? In other words, reversing the lists is not allowed.
因为两个数相加应该从低位加起,但是题目提到最好不要改动链表,所以我们可以把链表中的数存到stack中,然后再进行计算。
Implement
/**
* 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) {
stack<int> num1;
stack<int> num2;
while(l1){
num1.push(l1->val);
l1 = l1->next;
}
while(l2){
num2.push(l2->val);
l2 = l2->next;
}
int sum = 0;
//int tmp = 0;
ListNode* res = new ListNode(0);
while(!num1.empty() || !num2.empty()){
if(!num1.empty()){
sum += num1.top();
num1.pop();
}
if(!num2.empty()){
sum += num2.top();
num2.pop();
}
res->val = sum % 10;
ListNode* tmp = new ListNode(sum/10);
tmp->next = res;
res = tmp;
sum /= 10;
}
if(res->val == 0)
return res->next;
else
return res;
}
};
更多推荐
已为社区贡献1条内容
所有评论(0)