zoukankan      html  css  js  c++  java
  • LeetCode 3 两数相加

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

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

    示例:

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



    解题思路:
    从链表头开始, 依次相加, 然后每次判断需不需要进位, 如果需要进位, 使用carry 记录值为1 .
    并将当前位对10 取余
    注意两个链表不一样长, 其中一个链表为空, 最后一位相加超出链表长度 这三种情况.

    代码:
        ListNode* Sumlist = new ListNode(0);
        ListNode *p1 = l1, *p2 = l2 ,*curr=Sumlist;
        int carry = 0;
        //两个链表不一样长, 必须同时为空退出循环
        while (p1!=NULL||p2!=NULL)
        {
            //如果一个链表为空, 则值等于0
            int x = (p1 != NULL) ? p1->val : 0;
            int y = (p2 != NULL) ? p2->val : 0;
            //每次都要加上进位.
            int sum = x + y+carry;
                carry = sum / 10;
                sum = sum % 10;
            curr->next = new ListNode(sum);
            curr = curr->next;
            
            p1 = (p1 != NULL) ? p1->next : NULL;
            p2 = (p2 != NULL) ? p2->next : NULL;
        }
        //循环结束时, 还有进位.则往下多加一个链表
        if (carry > 0)
        {
            curr->next = new ListNode(carry);
        }
        return Sumlist->next;


  • 相关阅读:
    php命令注入
    mysql事物
    安装php环境
    移除服务器缓存实例
    show user profile synchronization tools
    manual start user profile import
    JSON is undefined. Infopath Form People Picker in SharePoint 2013
    asp.net web 应用站点支持域账户登录
    Load sharepoint envirement by powershell
    sharepoint 2016 download
  • 原文地址:https://www.cnblogs.com/derek-dhw/p/10477295.html
Copyright © 2011-2022 走看看