zoukankan      html  css  js  c++  java
  • 【LeetCode】2. 两数相加

    【题目描述】

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

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

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

    示例:

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

    【解题思路】

    注:最后的进位位不能遗漏;

    【提交代码】

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    
    
    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
        struct ListNode *head;
        struct ListNode *p;
        struct ListNode *tmp;
        int c;
        int s;
    
        head = ( struct ListNode *)malloc( sizeof(struct ListNode) );
    
        p = head;
        c = 0;
        while( l1 != NULL && l2 != NULL )
        {
            s = l1->val + l2->val + c;
    
            tmp = (struct ListNode *)malloc( sizeof(struct ListNode) );
            tmp->val = s % 10;
            tmp->next = NULL;
    
            p->next = tmp;
    
            c = s / 10; // 进位位
    
            l1 = l1->next;
            l2 = l2->next;
            p = p->next;
        }
    
        while( l1 != NULL )
        {
            s = l1->val + c;
            tmp = (struct ListNode *)malloc( sizeof(struct ListNode) );
            tmp->val = s % 10;
            tmp->next = NULL;
    
            c = s / 10;
    
            p->next = tmp;
            l1 = l1->next;
            p = p->next;
        }
    
        while( l2 != NULL )
        {
            s = l2->val + c;
            tmp = (struct ListNode *)malloc( sizeof(struct ListNode) );
            tmp->val = s % 10;
            tmp->next = NULL;
    
            c = s / 10;
    
            p->next = tmp;
            l2 = l2->next;
            p = p->next;
        }
    
        if( c != 0 ) // 最后的进位位
        {
            tmp = (struct ListNode *)malloc( sizeof(struct ListNode) );
            tmp->val = 1;
            tmp->next = NULL;
    
            p->next = tmp;
        }
    
        return head->next;
    }
  • 相关阅读:
    css定位
    Register Form
    自我介绍
    靠,用 mod_proxy_ajp 代替 mod_jk 不知简单多少倍
    Mac 切换 32 和 64
    JAVA面向对象(8)
    JAVA面向对象(7)
    JAVA面向对象(6)
    JAVA面向对象(5)
    JAVA面向对象(4)
  • 原文地址:https://www.cnblogs.com/utank/p/13228889.html
Copyright © 2011-2022 走看看