zoukankan      html  css  js  c++  java
  • 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

    说明:

         1)和大数相加相似,数组换成单链表,注意单链表的操作,其他和大数求和方法相似:先对应为相加,再进行进位处理

     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         ListNode head(-1);//头节点
    13         ListNode *p1=l1;
    14         ListNode *p2=l2;
    15         ListNode *p=&head;
    16         while(p1&&p2)//每个对应节点值相加
    17         {
    18             p1->val=(p1->val)+(p2->val);
    19             p->next=p1;
    20             p=p1;
    21             p1=p1->next;
    22             p2=p2->next;
    23         }
    24         p->next = p1?p1:p2;
    25         int d=0;//进位值
    26         p=head.next;
    27         ListNode *q=NULL;
    28         for(;p;q=p,p=p->next)//处理进位
    29         {
    30             
    31             int a=(p->val)+d;
    32             d=(a)/10;
    33             p->val = (a)%10;
    34         }
    35         if(d>0) //最高位有进位,则新建一个节点,如果不new,则函数结束时内存会被释放掉
    36         {
    37             //ListNode *l3=new ListNode(d);
    38             q->next=new ListNode(d);            
    39         }
    40         return l1;
    41     }
    42 };
  • 相关阅读:
    java-多态
    java-继承
    java-访问修饰符
    mysql基础入门
    子查询
    多表查询
    mysql表(多对多)
    myslql主外键约束
    Sql语句分类
    Redis的一些介绍
  • 原文地址:https://www.cnblogs.com/zhoutaotao/p/3823485.html
Copyright © 2011-2022 走看看