zoukankan      html  css  js  c++  java
  • 2. Add Two Numbers

    没有具体的算法,只是根据编译的运行错误不断的调试,调的我有点生气了,果断看看别人的思路。

    /**
    * 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* sum;
    ListNode* a, *b, *c;
    a = l1;
    int length1 = 0, length2 = 0;
    while (a != NULL)
    {
    a = a->next;
    length1++;
    }
    b = l2;
    while (b != NULL)
    {
    b = b->next;
    length2++;
    }
    sum = new ListNode(0);
    c = sum;
    a = l1;
    b = l2;
    if (length1 < length2)
    {
    int cc = 0;
    while (b != NULL)
    {
    if (a != NULL)
    {
    if (a->val + b->val >= 10)
    {
    c->val = (a->val + b->val) % 10+cc;
    cc = 1;
    }
    else
    {
    c->val = a->val + b->val + cc;
    cc = 0;
    }

    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;

    a = a->next;
    b = b->next;
    }
    else
    {
    c->val = b->val + cc;
    if (c->val==10&&b->next==NULL)
    {
    c->val = 0;
    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;
    c->val = 1;
    }
    if (b->next != NULL)
    {
    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;
    }
    b = b->next;
    }


    }
    }
    if (length1 > length2)
    {
    int cc = 0;
    while (a != NULL)
    {
    if (b != NULL)
    {
    if (a->val + b->val >= 10)
    {
    c->val = (a->val + b->val) % 10;
    cc = 1;
    }
    else
    {
    c->val = a->val + b->val + cc;
    cc = 0;
    }

    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;

    a = a->next;
    b = b->next;
    }
    else
    {
    c->val = a->val+cc;
    if (c->val == 10 && a->next == NULL)
    {
    c->val = 0;
    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;
    c->val = 1;
    }
    if (a->next!=NULL)
    {
    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;
    }

    a = a->next;
    }


    }
    }
    if (length1 == length2)
    {
    int bb = 0;
    while (a != NULL)
    {

    if (a->val + b->val>=10)
    {
    c->val = (a->val + b->val) % 10;
    bb = 1;
    }
    else
    {
    c->val = a->val + b->val+bb;
    bb = 0;
    }
    if (a->next != NULL)
    {
    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c = c->next;
    }
    if (a->next==NULL&&bb==1)
    {
    ListNode* sum1 = new ListNode(0);
    c->next = sum1;
    c->next->val = bb;
    }


    a = a->next;
    b = b->next;


    }
    }

    return sum;
    }

    };

  • 相关阅读:
    代码书写过程中的一些需要培养的好习惯(持续更新)
    arm linux 移植 PHP
    arm linux 支持 wifi (wpa_supplicant)
    arm linux 移植 OpenCV
    使用FFmpeg处理视频文件:视频转码、剪切、合并、播放速调整
    视频编解码 基本概念:GOP
    arm linux 移植 python3.6
    读懂反向传播算法(bp算法)
    FFmpeg命令详解
    (转)浅谈 Linux 内核无线子系统
  • 原文地址:https://www.cnblogs.com/a-dreaming-dreamer/p/5740182.html
Copyright © 2011-2022 走看看