首页 > 学院 > 开发设计 > 正文

Leetcode-2. Add Two Numbers

2019-11-06 07:31:29
字体:
来源:转载
供稿:网友

题目

翻译: 给你两个表示两个非负数字的链表。数字以相反的顺序存储,其节点包含单个数字。将这两个数字相加并将其作为一个链表返回。 输入: (2 -> 4 -> 3) + (5 -> 6 -> 4) 输出: 7 -> 0 -> 8

思路

一遍循环相加两个链表对应的值,设置标志来处理进位操作。

代码

class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int flag = 0; ListNode *head = new ListNode(0); ListNode *p1 = l1, *p2 = l2, *p3 = head; while(p1 != NULL && p2 != NULL) { flag += p1->val + p2->val; p1 = p1->next; p2 = p2->next; p3->next = new ListNode(flag % 10); p3 = p3->next; flag /= 10; } while(p1 != NULL) { flag += p1->val; p1 = p1->next; p3->next = new ListNode((p1->val + flag) % 10); p3 = p3->next; flag /= 10; } while(p2 != NULL) { flag += p2->val; p2 = p2->next; p3->next = new ListNode(flag % 10); p3 = p3->next; flag /= 10; } if(flag > 0) p3->next = new ListNode(1); return head->next; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表