zoukankan      html  css  js  c++  java
  • LeetCode_02 两数相加【链表】

    题目描述

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

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

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

    示例

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

    解法

    思路一

    整体思路:
    不对齐补零,若链表不为空则用sum(代表每个位的和的结果)加上,考虑进位。

    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//参数是两个链表
            ListNode* head = new ListNode(-1);//存放结果的链表
            ListNode* h = head;//移动指针
            int sum = 0;//每个位的加和结果
            bool carry = false;//进位标志
            while (l1 != NULL || l2 != NULL)
            {
                sum = 0;
                if (l1 != NULL)
                {
                    sum += l1->val;
                    l1 = l1->next;
                }
                if (l2 != NULL)
                {
                    sum += l2->val;
                    l2 = l2->next;
                }
                if (carry)//carry=true就是有进位
                    sum++;
                h->next = new ListNode(sum % 10);//
                h = h->next;
                carry = sum >= 10 ? true : false;//有进位为true
            }
            if (carry)//carry=true就是有进位
            {
                h->next = new ListNode(1);
            }
            return head->next;
        }
    };
    

    疑问
    对链表的操作:对链表怎么初始化进行检验,需要用头插法或者尾插法吗?

  • 相关阅读:
    前端常见跨域解决方案(全)
    小程序动画wx.createAnimation
    判断对象是否有某个属性
    占位符
    vue起航——搭建脚手架
    微信小程序-携带参数转发分享页面
    JS获取地址栏参数
    微信小程序wx:if vs hidden
    小程序websocket(心跳连接)
    初识websocket
  • 原文地址:https://www.cnblogs.com/zhuomoyixia/p/12318563.html
Copyright © 2011-2022 走看看