leetcode2 Add Two Numbers【連結串列模擬大數加法】
阿新 • • 發佈:2019-01-09
給定的連結串列是倒序的 MDZZ………………我還自己寫了半天反轉連結串列,才發現不對…………
然後後來又是各種報錯,發現自己寫麻煩了,總共先定義兩個指標,一個作為頭,一個往後走就可以了…………
AC1.0
/** * 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) { /*** ListNode *head1; head1->next=l1; ListNode *now=l1; while(now->next!=NULL) { post=now->next; now->next=post->next; post->next=head1->next; head1->next=post; } ListNode *head2; head2->next=l2; ListNode *now=l2; while(now->next!=NULL) { post=now->next; now->next=post->next; post->next=head1->next; head1->next=post; }醜陋的白寫了的反轉連結串列***/ ListNode *now=new ListNode(-1); ListNode *ans=now; int tot=0; bool flag=0; while(l1!=NULL||l2!=NULL) { if(l1!=NULL) { tot+=l1->val; l1=l1->next; } if(l2!=NULL) { tot+=l2->val; l2=l2->next; } now->next=new ListNode(tot%10); now=now->next; tot=tot/10; } if(tot>0) { now->next=new ListNode(tot); now=now->next; } return ans->next; } };
AC2.0
精簡版…………自己差的太多了………………哎…………每天進步一點點吧
* 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) { ListNode *now=new ListNode(-1); ListNode *ans=now; int tot=0; while(l1||l2||tot) { int sum=tot+(l1?l1->val:0)+(l2?l2->val:0); now->next=new ListNode(sum%10); now=now->next; tot=sum/10; l1=l1?l1->next:l1; l2=l2?l2->next:l2; } return ans->next; } };
就記得這個題前一陣做過嘛……
tmpNext.next=ListNode(s%10)
tmpNext=tmpNext.next
寫的時候還是沒想起來
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ ans=ListNode(0) tmpNext=ans res=0 v1=l1.val v2=l2.val while(l1 or l2 or res): s=v1+v2+res res=s/10 tmpNext.next=ListNode(s%10) tmpNext=tmpNext.next l1=l1.next if l1 else l1 l2=l2.next if l2 else l2 v1=l1.val if l1 else 0 v2=l2.val if l2 else 0 return ans.next
python用的越來越順手了QAQ 主要還是刷題需要的語法少
那四個if else想合併 發現還不如這麼寫行數少
這種寫法還是在工程程式碼中看到的呢