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

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

You are given two non-empty linked lists representing two non-negative integers. 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.

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

这道题总的来说不是很难。只需要历遍两个链表,将对应的值相加就可以了。

在计算的过程中要把进位计算在内,注意最后一位的进位。

下面直接贴代码:

/** * 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 *result, *temp1, *temp2;        result = temp1 = NULL;        int carry = 0;  // 刚开始进位为0        while (l1 != NULL && l2 != NULL) {            temp2 = new ListNode((l1->val + l2->val + carry)%10);  // l1 + l2 的个位数            if (result == NULL) {                result = temp1 = temp2;            } else {                temp1->next = temp2;            }            temp1 = temp2;            carry = (l1->val + l2->val + carry)/10;            l1 = l1->next;            l2 = l2->next;        }        if (l1 != NULL) {            temp1->next = l1;        }        if (l2 != NULL) {            temp1->next = l2;        }        int i;        while (temp1-> next != NULL) {            temp1 = temp1->next;            i = temp1->val;            temp1->val = (i + carry)%10;            carry = (i + carry)/10;        }        if (carry != 0) {            temp2 = new ListNode(carry);            temp1->next = temp2;        }        return result;    }};

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

你可能感兴趣的文章
【C语言】深入理解const,volatile,static关键字
查看>>
【C语言】c/c++程序的内存是如何分配的?
查看>>
【C语言】深入理解C语言的函数调用过程
查看>>
【C语言】C语言中格式化字符的具体用法(C语言中%的那些事)
查看>>
【java】十大经典排序算法(动图演示)
查看>>
【代码规范】google开源c\c++项目代码规范
查看>>
【C语言】c语言常用的几个函数源代码【strlen,strcpy,strcat,strstr】
查看>>
【C语言】杨辉三角问题
查看>>
【C语言】size与strlen的区别解析
查看>>
【C语言】指针深入理解-指针与数组的关系
查看>>
【C语言】C语言中常用函数源代码【strncpy ,strncat ,strncmp】
查看>>
【linux】入门学习Linux常用必会命令实例详解
查看>>
【java】java高级开发之泛型
查看>>
【java】sting和stringbuilder与stringbuffer的区别辨析
查看>>
【Java】【算法练习】题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是输出yes,不是输出no,数组任意两个数字不相同。
查看>>
【Java】给定一个二叉树和其中的一个节点,请找出中序遍历的下一个节点且返回, 注意:树中的节点不仅包含左右子节点,同时包含父节点的指针。
查看>>
【Java】内存泄漏与内存溢出 学习总结
查看>>
【Java】命名规范
查看>>
【Java】—— java基础篇
查看>>
【Java】—— JVM篇
查看>>