美文网首页算法与C++
Leetcode 2 the sum of two num

Leetcode 2 the sum of two num

作者: Vophan | 来源:发表于2019-01-17 16:09 被阅读2次

    题目解析:

    将数字以链表的形式逆序储存,每个Node储存一位数字。

    然后实现两个链表相加。

    思路解析:

    1、数字的位数可能不同,我们怎么解决这个问题,开始我想的特别复杂,想的是先比较两个链表的长短,然后在把所有数都加到长的链表上,但是简单的方法应该是不用考虑那么多,另外定义一个链表,然后将每次加和的结果放到这个链表里,如果长度不一,也没关系,只需要加完长度相同的部分,再去循环剩下的部分。

    2、还需要考虑进位,两数之和大于10的情况,开始我的想法是什么呢?就是计算加和,然后求出模10的结果,思路应该没问题,但是因为前面大方向的错误,导致耦合性特别高,牵一发而动全身,导致后面各种错误。(吸取教训)

    3、在最后也要注意,最后以为相加若大于0,那么我们还得进位。

    代码:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
            ListNode* p=new ListNode(0);
            ListNode* top=p;
            ListNode* q=NULL;
            int flag =0;
            int tmp;
            while(l1&&l2)
            {
                tmp=l1->val+l2->val+flag;
                flag=tmp/10;
                q=new ListNode(tmp%10);
                p->next=q;
                p=p->next;
                l1=l1->next;
                l2=l2->next;
            }
            while(l1)
            {
                tmp=l1->val+flag;
                q=new ListNode(tmp%10);
                flag=tmp/10;
                p->next=q;
                p=p->next;
                l1=l1->next;
            }
            while(l2)
            {
                tmp=l2->val+flag;
                q=new ListNode(tmp%10);
                flag=tmp/10;
                p->next=q;
                p=p->next;
                l2=l2->next;
            }
            if(flag==1) 
            {
                q=new ListNode(1);
                p->next=q;
            }
            return top->next;
        }
    
    };
    
    

    反思

    1、思路一定要清晰,把握好大方向,尽最大可能将大的问题化为小的问题,并且一定要降低耦合性,否则你会杀死自己的,一定要记住今天的教训。

    2、对链表的一些思考,链表真的是方便插入,所以我们在使用时,就会很方便,只需要将指针对应起来就行

    3、还有一定要用笔将整个过程想清楚,不要什么都没想清楚就开始打代码。

    相关文章

      网友评论

        本文标题:Leetcode 2 the sum of two num

        本文链接:https://www.haomeiwen.com/subject/lfbidqtx.html