首页 > 其他 > 详细

letCode-2

时间:2019-03-06 13:34:46      阅读:152      评论:0      收藏:0      [点我收藏+]

letCode第二题题目如下:

  给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 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 * result = new ListNode(0);
        int carry = 0;
        ListNode* curr = result;
        //有进位,任意链表均有值
        while(l1!=NULL || l2 != NULL | carry!=0){
       //这里分开判断
if (l1 != NULL){ carry += l1->val; l1 = l1->next; } if(l2 != NULL){ carry += l2->val; l2 = l2->next; } ListNode* node = new ListNode(carry%10); //向下取整 carry/=10; curr->next = node; curr = node; } return result; } };

 

letCode-2

原文:https://www.cnblogs.com/zhangthree/p/10482334.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!