zoukankan      html  css  js  c++  java
  • LeetCode 2 两数相加(链表and迭代)

    1.题目链接

    https://leetcode-cn.com/problems/add-two-numbers/

    2.题目描述

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

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

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

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

    3.题目解析

    3.1链表(Linked List)是由一连串的结构(称为结点)组成的,其中每个结点都包含指向下一个链中结点的指针(Pointer),如下图所示:

     

    一般的,一个链表结点包含一个整数(即结点的数据)和指向表中下一个结点的指针。下面是结点的结构描述:

    struct ListNode {
        int val;
        struct ListNode *next;
    };

    3.2 在本题目中,定义一个进位变量int c,在l1或l2不为空时依次迭代,每个结点的值value相加,相加值除以10,判断是否有进位,如下图所示:

    4.代码实现

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    
    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
        int tmp = 0, c = 0;
        struct ListNode *HeadNode = NULL;
        struct ListNode *tempNode = NULL;
        tempNode = (struct ListNode *)malloc(sizeof(struct ListNode));
        HeadNode = tempNode;
    
        while (l1 || l2) {
            tempNode->next = (struct ListNode *)malloc(sizeof(struct ListNode));
            tempNode = tempNode->next;
            if (l1 == NULL)
                tmp 0 + l2->val + c;
            else if (l2 == NULL)
                tmp = l1->val + 0 + c;
            else
                tmp = l1->val + l2->val + c;
            
            tempNode->val = tmp % 10;
            tempNode->next = NULL;
            c = tmp / 10;
    
            if (l1 != NULL)
                l1 = l1->next;
            if (l2 != NULL)
                l2 = l2->next;
        }
        if (c) {
            tempNode->next = (struct ListNode *)malloc(sizeof(struct ListNode));
            tempNode = tempNode->next;
            tempNode->val = 1;
            tempNode->next = NULL;
            c 0;
        }
        return HeadNode->next;
    }

    5.提交记录

    stay hungry, stay foolish
  • 相关阅读:
    归并排序
    边割集
    NBUT 1225 NEW RDSP MODE I 2010辽宁省赛
    NBUT 1218 You are my brother 2010辽宁省赛
    NBUT 1220 SPY 2010辽宁省赛
    NBUT 1219 Time 2010辽宁省赛
    NBUT 1223 Friends number 2010辽宁省赛
    NBUT 1217 Dinner 2010辽宁省赛
    第七届蓝桥杯个人赛省赛--C语言B组
    2017广东工业大学程序设计竞赛决赛 tmk买礼物
  • 原文地址:https://www.cnblogs.com/zygote/p/13499673.html
Copyright © 2011-2022 走看看