• [leetcode] 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

    把两个链表的非负数字相加,如果超过10则需要进位。

    分成三步处理:

    • 处理两个链表相同长度的部分。
    • 处理长链表的部分。
    • 对长链表最高位进位的处理。

    代码如下:

     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             // Start typing your C/C++ solution below
    13             // DO NOT write int main() function
    14             ListNode * p= l1; ListNode *q=l2;
    15             ListNode * k =new ListNode(0);
    16             ListNode * r=k;
    17             int remain=0;
    18             for(;p!=NULL&&q!=NULL; p=p->next,q=q->next)
    19             {    
    20                 int sss;
    21                 sss=(p->val+q->val+remain);
    22                 r->next =new ListNode (sss%10);
    23                 r=r->next;
    24                 remain=sss/10;
    25             }
    26             if(p!=NULL)
    27             {
    28                 for(;p!=NULL; p=p->next)
    29                 {    
    30                     int sss;
    31                     sss=(p->val + remain);
    32                     r->next =new ListNode (sss%10);
    33                     r=r->next;
    34                     remain=sss/10;
    35                 }
    36             }
    37             if(q!=NULL)
    38             {
    39                 for(;q!=NULL; q=q->next)
    40                 {    
    41                     int sss;
    42                     sss=(q->val + remain);
    43                     r->next =new ListNode (sss%10);
    44                     r=r->next;
    45                     remain=sss/10;
    46                 }
    47             }
    48             if(remain!=0) 
    49             {
    50                 r->next =new ListNode (1);
    51                 //  k->next=NULL;
    52             }
    53             return k->next;
    54         }
    55 }; 
  • 相关阅读:
    编写有效事务的指导原则
    ReadUnCommitted与ReadCommitted
    用Delphi 、VB.net以及C#混合编程
    查询未提交事务个数
    输入法的切换问题
    有关数据死锁问题的一篇好文章,一个好博客
    同一连接内事务名只有一个
    无法运行16位应用程序
    查看长时间运行的事务
    在TSQL中使用临时表的注意事项
  • 原文地址:https://www.cnblogs.com/jostree/p/3696434.html
Copyright © 2020-2023  润新知