2. 兩數相加

最大難點: 讀不懂題
“大爺你去哪兒” “到二仙橋”“不是我問你走哪條道”“走成華大道”
這道題主要要看一下示例三:
通過示例三可以知道,是兩個鏈表,頭結點對齊,并不是尾節點對齊
思路:
- 依次拿到兩條鏈表的每個節點的val
- val相加 ,將得數的個位保存到新鏈表的 val
- 將產生的進位,另外保存,等到下一個節點計算時,將進位的1,一起計算
- 注意判斷條件,如果兩條鏈表都走完了,但是進位的1 還在,則該進位就是最高位,則需要new一個節點保存該進位1,這樣才算正式結束
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode * head=new ListNode();
ListNode * p=head;
int v=0; //這個v是最后一位 ,
while(l1||l2||v) 重點
{
/*為空高位自動補0*/
int v1=l1?l1->val:0,v2=l2?l2->val:0;
//這個是算出來的 最低位
int res=(v1+v2+v)%10;
v=(v1+v2+v)/10;//這個是進位的數
p->val=res;
if(l1)l1=l1->next;
if(l2)l2=l2->next;
if(l1||l2||v)//重點
{
p->next=new ListNode();
p=p->next;
}
}
return head;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296763.html
標籤:其他
上一篇:Linux中編譯錯誤之——‘nullptr’ was not declared in this scope‘
下一篇:實時(三)
