リンク:
タイトル:
2 つの非負の整数を表す、2 つの空ではないリンク リスト l1 および l2 が与えられます。数値の最上位桁は、リンクされたリストの先頭にあります。各ノードには 1 桁だけが保存されます。これらの数値を追加すると、新しいリンクされたリストが返されます。
どちらの数字も、0 以外のゼロで始まることはないと考えられます。
問題解決:
スタックを使用してリンク リストの値を保存します。
また、2つの数を足した余りは一の位、約数は十の位となります。
class Solution {
public:
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
ListNode* addInList(ListNode* head1, ListNode* head2) {
// write code here
stack<int> s1;
stack<int> s2;
stack<int> result;
while(head1){
s1.push(head1->val);
head1=head1->next;
}
while(head2){
s2.push(head2->val);
head2=head2->next;
}
int high=0;//进位
while(!s1.empty()||!s2.empty()||high!=0){
int a=0;
int b=0;
if(s1.empty()){
a=0;
}else{
a=s1.top();s1.pop();
}
if(s2.empty()){
b=0;
}else{
b=s2.top();s2.pop();
}
int low=(a+b+high)%10;
high=(a+b+high)/10;
result.push(low);
}
ListNode* dhead=new ListNode(-1);
ListNode* cur=dhead;
while(!result.empty()){
cur->next=new ListNode(result.top());
cur=cur->next;
result.pop();
}
return dhead->next;
}
};