zoukankan      html  css  js  c++  java
  • Add Two Numbers

    You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

    Output: 7 -> 0 -> 8

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
    12         
    13         ListNode *l3 = new ListNode(0);
    14         ListNode *p1 = l1;
    15         ListNode *p2 = l2;
    16         ListNode *p3 = l3;
    17         
    18         int carry = 0;
    19         int sum = 0;
    20         while(p1 != NULL && p2 != NULL)
    21         {
    22             sum = p1->val + p2->val + carry;
    23             ListNode *node = new ListNode(sum % 10);
    24             p3->next = node;
    25             p3 = node;
    26             
    27             carry = sum / 10;
    28             node = NULL;
    29             
    30             p1 = p1->next;
    31             p2 = p2->next;
    32         }
    33         
    34         while(p1 != NULL)
    35         {
    36             sum = p1->val + carry;
    37             ListNode *node = new ListNode(sum % 10);
    38             p3->next = node;
    39             p3 = node;
    40             
    41             carry = sum / 10;
    42             node = NULL;
    43             
    44             p1 = p1->next;
    45         }
    46         
    47         while(p2 != NULL)
    48         {
    49             sum = p2->val + carry;
    50             ListNode *node = new ListNode(sum % 10);
    51             p3->next = node;
    52             p3 = node;
    53             
    54             carry = sum / 10;
    55             node = NULL;
    56             
    57             p2 = p2->next;
    58         }
    59         
    60         if(carry != 0)
    61         {
    62             ListNode *node = new ListNode(carry);
    63             p3->next = node;
    64             p3 = node;
    65             
    66             node = NULL;
    67         }
    68         
    69         ListNode *del = l3;
    70         l3 = l3->next;
    71         delete del;
    72         
    73         return l3;
    74     }
    75 };
  • 相关阅读:
    SCCM 2007 部署软件更新
    WPF开发工具
    体验Windows Live Writer写Blog
    图像的灰度和黑白处理算法
    很有用的Sql总结转载
    WPF 体验导航窗口
    WPF 一周练
    WPF 图表
    也说Linq 分组
    WPF 体验对话框调用
  • 原文地址:https://www.cnblogs.com/YQCblog/p/3970195.html
Copyright © 2011-2022 走看看