• LeetCode2-Add Two Numbers


    题目

    You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

    分析:

      这道题并不难,主要是细节的分析和控制,一个特殊情况就是两个列都遍历完之后,但是进位为1,此时要新建一个尾节点来存储这个数。

    参考代码:

    /**
     * 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) {
            bool jw=0;
            int num=0;
            int sum=0;
            int count = 0;
            ListNode *result, *pre_node, *cur_node;
    
            while (l1 != NULL && l2 != NULL)
            {
                sum = l1->val + l2->val + jw;
                num = sum % 10;
                cur_node = (ListNode *)malloc(sizeof(ListNode));
                cur_node->val = num;
                cur_node->next = NULL;
                if (count == 0)
                {
                    result = cur_node;
                    pre_node = cur_node;
                }
                else
                {
                    pre_node->next = cur_node;
                    pre_node=pre_node->next;
                }
                l1 = l1->next;
                l2 = l2->next;
                count++;
                jw=sum/10;
            }
    
            while (l1 != NULL)
            {
                sum = l1->val+jw;
                num = sum % 10;
                l1->val=num;
                cur_node->next = l1;
                cur_node=cur_node->next;
                l1 = l1->next;
                jw=sum/10;
            }
            while (l2 != NULL)
            {
                sum = l2->val+jw;
                num = sum % 10;
                l2->val=num;
                cur_node->next = l2;
                cur_node=cur_node->next;
                l2 = l2->next;
                jw=sum/10;
            }
            if(jw==1)
            {
                ListNode *tail=(ListNode *)malloc(sizeof(ListNode));
                tail->val=jw;
                cur_node->next=tail;
                cur_node=cur_node->next;
            }
            cur_node->next = NULL;
            return result;
        }
    };

     

  • 相关阅读:
    codis安装手册
    引用对象的使用和易产生bug的示例
    shallow copy 和 deep copy 的示例
    [转载] 公知其实就是正常人嘛
    Spring GET请求实体中日期的转换
    [转载] 方方: 借陸遊三個字:錯,錯,錯(3月16日)
    [转载] 英国防疫怪招
    [记录] Disruptor 介绍
    [记录] 重要网址备忘
    [转载] 面对新冠病毒在全球的大流行,我们如何自保?
  • 原文地址:https://www.cnblogs.com/yanqi0124/p/4244985.html
Copyright © 2020-2023  润新知