除了做做ACM的题,也会没事刷刷leetcode的题感受一下 这里主要是对比自己的写法与其他人更好的写法之间的差异 后面有可能会尝试其他语言来完成题目?
题目意思清晰直白 只存储某位的链表逆序相加得到新链表
写的时候才会考虑到很多细节问题 进位是最容易想到的问题 还有两个链表长度不一致的问题 以及最后提交才发现的可能存在单纯由于进位导致长度增加的问题
刷leetcode感觉就是算法层面的并不是特别复杂 工业应用的也往往是这种简单的逻辑 但要考虑到种种细节…细桀(
代码如下
++1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
   | 
 
 
 
 
 
 
  class Solution { public:     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {         bool over=false;         ListNode *res=NULL,*cur=NULL;         if((l1->val+l2->val)>=10){             over=true;         }         cur=res=new ListNode((l1->val+l2->val)%10);         l1=l1->next,l2=l2->next;         while(l1!=NULL&&l2!=NULL){             int addtemp=l1->val+l2->val+over;             ListNode *tmp=new ListNode(addtemp%10);             if(addtemp>=10){                 over=true;             }             else{                 over=false;             }             cur->next=tmp;             cur=tmp;             l1=l1->next;             l2=l2->next;         }         ListNode *left=(l1==NULL)?l2:l1;         while(left!=NULL)         {             int addtemp=left->val+over;             ListNode *tmp=new ListNode(addtemp%10);             if(addtemp>=10)             {                 over=true;             }else{                 over=false;             }             cur->next=tmp;             cur=tmp;             left=left->next;         }         if(over)         {             ListNode *tmp=new ListNode(1);             cur->next=tmp;         }         return res;     } };
 
  |