zoukankan      html  css  js  c++  java
  • 【leetcode】02_两数相加

    链接

    [https://leetcode-cn.com/problems/add-two-numbers/]
    难度中等


    描述

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

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

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


    示例

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

    AC代码

    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
            ListNode* head=new ListNode(-1);//存放结果的链表
            ListNode* h=head;//移动指针
            ListNode* del=head;//释放head的内存空间,多次调用后会造成内存泄漏
            int sum=0;//每个位的加和结果
            int carry=0;//进位标志
            while(l1!=NULL||l2!=NULL||carry)
            {
                sum=0;
                if(l1!=NULL)
                {
                    sum+=l1->val;
                    l1=l1->next;
                }
                if(l2!=NULL)
                {
                    sum+=l2->val;
                    l2=l2->next;
                }
                if(carry)
                    sum++;
                h->next=new ListNode(sum%10);
                h=h->next;
                carry=sum/10;
            }
            head=head->next;
            delete del;
            return head;
        }
    };
    
    
    
    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
        int c=0;
        struct ListNode *head=(struct ListNode *)malloc(sizeof(struct ListNode)),*cur=head,*del=head;
        //head虚拟头结点地址,cur当前节点地址,del用于删除虚拟头结点
        while(l1!=NULL||l2!=NULL||c)
        {
            cur->next=(struct ListNode *)malloc(sizeof(struct ListNode));
            cur=cur->next;
            l1=l1!=NULL?(c+=l1->val,l1->next):l1;
            l2=l2!=NULL?(c+=l2->val,l2->next):l2;
            cur->val=c%10;
            c=c/10;
        }
        cur->next=NULL;
        head=head->next;
        free(del);
        return head;
    }
    
    
  • 相关阅读:
    leetcode 673. 最长递增子序列的个数 java
    leetcode 148. 排序链表 java
    leetcode 98. 验证二叉搜索树 java
    leetcode 29. 两数相除 java
    leetcode 234. 回文链表 java
    Valid Palindrome LeetCode Java
    Single Number II LeetCode Java
    Single Number LeetCode java
    Search in Rotated Sorted Array II LeetCode Java
    Search in Rotated Sorted Array leetcode java
  • 原文地址:https://www.cnblogs.com/tazimi/p/13303002.html
Copyright © 2011-2022 走看看