Add Two Numbers(C++两数相加)

ゝ一纸荒年。 2022-10-14 01:21 139阅读 0赞

(1)注意最后的进位

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode() : val(0), next(nullptr) {}
  7. * ListNode(int x) : val(x), next(nullptr) {}
  8. * ListNode(int x, ListNode *next) : val(x), next(next) {}
  9. * };
  10. */
  11. class Solution {
  12. public:
  13. ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
  14. ListNode *head=new ListNode(0);
  15. ListNode *p=head,*temp=nullptr;
  16. int sum=0,c=0;
  17. while(l1!=nullptr && l2!=nullptr) {
  18. sum=l1->val+l2->val+c;
  19. if(sum>=10) {
  20. sum-=10;
  21. c=1;
  22. } else c=0;
  23. temp=new ListNode(sum);
  24. p->next=temp;
  25. p=p->next;
  26. l1=l1->next;
  27. l2=l2->next;
  28. }
  29. while(l1!=nullptr) {
  30. sum=l1->val+c;
  31. if(sum>=10) {
  32. sum-=10;
  33. c=1;
  34. } else c=0;
  35. temp=new ListNode(sum);
  36. p->next=temp;
  37. p=p->next;
  38. l1=l1->next;
  39. }
  40. while(l2!=nullptr) {
  41. sum=l2->val+c;
  42. if(sum>=10) {
  43. sum-=10;
  44. c=1;
  45. } else c=0;
  46. temp=new ListNode(sum);
  47. p->next=temp;
  48. p=p->next;
  49. l2=l2->next;
  50. }
  51. if(c==1) {
  52. temp=new ListNode(1);
  53. p->next=temp;
  54. p=p->next;
  55. }
  56. p->next=nullptr;
  57. return head->next;
  58. }
  59. };

发表评论

表情:
评论列表 (有 0 条评论,139人围观)

还没有评论,来说两句吧...

相关阅读

    相关 2.相加 Add Two Numbers

    题目描述 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回