• 【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;
    }
  • 相关阅读:
    navicat安装与激活
    MySQL 安装
    oracle中not in 和 in 的替代写法
    oracle中in和exists的区别
    oracle中nvarchar2()和varchar2()的区别
    oracle稳定执行计划(更改)的方法
    oracle显示转化字段类型
    oracle中varchar2(2)存不了一个汉字的原因
    oracle中索引快速全扫描和索引全扫描的区别
    oracle常见的执行计划
  • 原文地址:https://www.cnblogs.com/utank/p/13228889.html
Copyright © 2020-2023  润新知