LeetCode.Problem2 Add two numbers

話不多說,先貼代碼。

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
    int k;ListNode *l3;ListNode l4(0);
    l3=&l4;
    while(l1||l2){
        if(l1==nullptr) {l1=new ListNode(0);}
        else if(l2==nullptr) {l2=new ListNode(0);}
        if(l1->val+l2->val>9){
                k=(l1->val+l2->val)-10;l3->next=new ListNode(k);
                if(l1->next) l1->next->val++;
                else if(l2->next) l2->next->val++;
                else {l3=l3->next;l3->next=new ListNode(1);break;}
        }
        else{k=l1->val+l2->val;l3->next=new ListNode(k);}
        l1=l1->next;l2=l2->next;l3=l3->next;

    }
    l3=&l4;l3=l3->next;
    return l3;
}
感覺和別人對比起來,我洗的其實算是比較麻煩的代碼,應該說是按照原始的數字加法法則應用出來的一個算法,主要在k值判斷上,有算法用的是%10的方法,而我是減10進位。算法時間複雜度應該是O(m+n)

發佈了38 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章