zoukankan      html  css  js  c++  java
  • leetcode 2. 两数相加

    给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

    你可以假设除了数字 0 之外,这两个数字都不会以零开头。

    示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807


     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         int carry = 0;
    13         ListNode  q(0), *p = &q; //不是很理解这里的意思,对指针理解的不是很透彻
    14         while(l1 || l2 || carry){
    15             int sum = (l1?l1->val:0)+(l2?l2->val:0) + carry;
    16             p->next = new ListNode(sum%10);
    17             p = p->next;
    18             carry = sum/10;
    19             l1 = l1?l1->next:NULL;
    20             l2 = l2?l2->next:NULL;
    21         }
    22         return q.next;
    23     }
    24 };

    当做经验记下来吧, 涉及到指针的时候,就用LIstNode p(0), *q = &p;

    return p.next; 

    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    冒泡排序
    三种for循环遍历
    打印一年中的月历
    基于主主复制的mysql双机热备+keepalived实现高可用性
    docker实现apache+php容器和mysql容器独立运行
    XML和JSON
    PHP表单
    【翻译-Docker】Post-installation steps for Linux
    【翻译】docker install
    小计划
  • 原文地址:https://www.cnblogs.com/mr-stn/p/8997972.html
Copyright © 2011-2022 走看看