LeetCode算法题:两数相加

题目:

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

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

来源:力扣(LeetCode)

链接:2. 两数相加 - 力扣(LeetCode) (leetcode-cn.com)

示例:

输入:l1 = [2,4,3], l2 = [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  *l3 = NULL,*q3 = NULL;
    int c = 0;
    int a,b;
    while(l1 || l2)
    {
        a = l1? l1->val:0;
        b= l2? l2->val:0;
        if(!l3)
        {
            l3 = q3 = malloc(sizeof(struct ListNode));
            q3->val = a + b + c;
            if(q3->val >9)
            {
                q3->val -=10;
                c = 1;
            }
            else c=0;
            q3->next = NULL;
        }
        else 
        {
            q3->next = malloc(sizeof(struct ListNode));
             q3->next->val = c + a + b;
            if(q3->next->val > 9)
            {
                q3->next->val -= 10;
                c = 1;
            }
            else c= 0;
            q3 = q3->next;
            q3->next = NULL;
        }
        if(l1)
        {
            l1 = l1->next;
        }
        if(l2)  l2 = l2->next;
        
    }
    if(c)
    {
        q3->next = malloc(sizeof(struct ListNode));
        q3->next->val = 1;
        q3->next->next = NULL;
    }
    
    return l3;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容