Add Two Numbers

来源:互联网 发布:js数组删除元素splice 编辑:程序博客网 时间:2024/06/05 06:02

题目分析

1. 给出两个队列,做高精度加法,不存在前导零。

2. 这道题本身没有什么难度,不过在看过Top Solution之后学到用一个前导的指针作为开头代码能够写得更好看一些。

3. 以后也要多看Top Solution,学习一些比较好的写法。


题目代码

 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* p1 = l1; ListNode* p2 = l2; ListNode* resultTail = NULL; ListNode* resultHead = NULL; int carry = 0; while (p1 != NULL || p2 != NULL) { ListNode * temp = new ListNode(((p1 == NULL ? 0 : p1->val) + (p2 == NULL ? 0 : p2->val) + carry) % 10); carry = ((p1 == NULL ? 0 : p1->val) + (p2 == NULL ? 0 : p2->val) + carry) / 10; if (resultHead == NULL) resultHead = temp; if (resultTail != NULL) resultTail->next = temp; resultTail = temp; p1 = (p1 == NULL ? NULL : p1->next); p2 = (p2 == NULL ? NULL : p2->next); } if (carry != 0) resultTail->next = new ListNode(carry); return resultHead; } };

class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* p1 = l1;ListNode* p2 = l2;ListNode* resultHead = new ListNode(0);ListNode* resultTail = resultHead;int carry = 0;while (p1 != NULL || p2 != NULL) {ListNode * temp = new ListNode(((p1 == NULL ? 0 : p1->val) + (p2 == NULL ? 0 : p2->val) + carry) % 10);carry = ((p1 == NULL ? 0 : p1->val) + (p2 == NULL ? 0 : p2->val) + carry) / 10;resultTail->next = temp;resultTail = temp;p1 = p1 == NULL ? NULL : p1->next;p2 = p2 == NULL ? NULL : p2->next;}if (carry != 0) resultTail->next = new ListNode(carry); return resultHead->next;}};


0 0
原创粉丝点击