leetcode Add Two Numbers

来源:互联网 发布:windows 路由表 命令 编辑:程序博客网 时间:2024/06/04 20:01

思路:

1,新建第三个个链表,用来存储得到的和

2 ,判断给的两个字符串的长度,确定两个数的位数

3,从低位开始相加,如果超过十,则向高位进1;不足十的话直接保存

4,当数位低的链表加完后,如果没有进位,则所求数的高位数和较长的数组的高位数一样

class Solution {public:    ListNode addTwoNumbers(ListNode *l1, ListNode *l2) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        int carry = 0;        ListNode *head;        ListNode *pre;        ListNode *p1 = l1;        ListNode *p2 = l2;        while(p1&&p2){                      p1=p1->next;                      p2=p2->next;                     }        if(p2){               p2=l1;               p1=l2;               }        else{             p1=l1;             p2=l2;             }        head = p1;        while(p1){                  p1->val =p1->val+carry+(p2? p2->val:0);                  carry = (p1->val)/10;                  p1->val=(p1->val)%10;                  pre = p1;                  p1=p1->next;                  if(p2){                         p2=p2->next;                         }                  }        if(carry){                pre->next=new ListNode(1);                }        return head;                                                     }};

原创粉丝点击