博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Add Two Numbers
阅读量:6314 次
发布时间:2019-06-22

本文共 2315 字,大约阅读时间需要 7 分钟。

好久没有写C了,LeetCode上面的一道题:

You are given two non-empty linked lists representing two non-negative

  1. The digits are stored in reverse order and each of their

  2. contain a single digit. Add the two numbers and return it as a

linked list.

You may assume the two numbers do not contain any leading zero, except

the number 0 itself.

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

我的代码:

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {    struct ListNode* result = (struct ListNode*)malloc(sizeof(struct ListNode));    result->next = NULL;    struct ListNode* result_temp = result;    struct ListNode* l1_node;    struct ListNode* l2_node;    l1_node = l1;    l2_node = l2;    while (l1_node != NULL || l2_node != NULL)    {        struct ListNode* result_node = (struct ListNode*)malloc(sizeof(struct ListNode));        result_node->val = 0;        result_node->next = NULL;        if (l1_node != NULL)        {            result_node->val += l1_node->val;            l1_node = l1_node->next;        }        if (l2_node != NULL)        {            result_node->val += l2_node->val;            l2_node = l2_node->next;        }        while (result_temp->next!= NULL)        {            result_temp = result_temp->next;        }        result_temp->next = result_node;    }    result_temp = result->next;    while (result_temp != NULL)    {        if (result_temp->val >= 10)        {            if (result_temp->next != NULL)            {                result_temp->next->val++;            }            else            {                struct ListNode* last_node = (struct ListNode*)malloc(sizeof(struct ListNode));                last_node->val = 1;                last_node->next = NULL;                result_temp->next = last_node;            }            result_temp->val = result_temp->val - 10;        }        result_temp = result_temp->next;    }    return result->next;    }

对比下大神写的代码(C++):

ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {    ListNode preHead(0), *p = &preHead;    int extra = 0;    while (l1 || l2 || extra) {        int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra;        extra = sum / 10;        p->next = new ListNode(sum % 10);        p = p->next;        l1 = l1 ? l1->next : l1;        l2 = l2 ? l2->next : l2;    }    return preHead.next;}

转载地址:http://waaxa.baihongyu.com/

你可能感兴趣的文章
Flutter 布局(四)- Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth详解
查看>>
Guava Cache
查看>>
翻译连载 | JavaScript 轻量级函数式编程-第1章:为什么使用函数式编程?|《你不知道的JS》姊妹篇 ...
查看>>
如果在swift的extension中override方法,你就会发现这有点难办
查看>>
Spring中的事件驱动模型(二)
查看>>
移动商城第十五篇【单品查询】
查看>>
机器学习在电商应用中的三个境界:爆款模型、转化率模型及个性化模型
查看>>
let与var的区别
查看>>
从架构演进的角度聊聊Spring Cloud做了些什么
查看>>
解释器模式
查看>>
2018 前端性能优化清单 - 第 3 部分
查看>>
20181211 - es6(Array && Object && class继承剖析 && generator和iterator原理)
查看>>
webpack + Vue + Hbuilder 打包成App,混合app开发,一个人搞定
查看>>
深入理解Plasma(四)Plasma Cash
查看>>
Glide 系列-3:Glide 缓存的实现原理(4.8.0)
查看>>
搜狐新闻APP是如何使用HUAWEI DevEco IDE快速集成HUAWEI HiAI Engine
查看>>
模拟病毒扫描程序(Executors、ScheduledExecutorService类)
查看>>
阿里巴巴1682亿背后的“企业级”高效持续交付
查看>>
聊聊HystrixConcurrencyStrategy
查看>>
Flutter之WidgetsApp使用详解&与MaterialApp的纠缠
查看>>