leetcode2. Add Two Numbers
Posted yuchi328
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode2. Add Two Numbers相关的知识,希望对你有一定的参考价值。
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.
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807.
链表添加节点new的操作,注意最后的进位处理。
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { 12 ListNode res(0); 13 ListNode * nTmp = &res; 14 int carry = 0; 15 while (l1||l2) { 16 int v1,v2; 17 if(l1 == nullptr) v1 = 0; 18 else{ 19 v1 = l1->val; 20 l1 = l1->next; 21 } 22 if(l2 == nullptr) v2 = 0; 23 else{ 24 v2 = l2->val; 25 l2 = l2->next; 26 } 27 int cur = (v1 + v2 + carry) % 10; 28 carry = (v1 + v2 + carry) / 10; 29 ListNode * tmp = new ListNode(cur); 30 nTmp->next = tmp; 31 nTmp = nTmp->next; 32 } 33 if(carry){ 34 ListNode * tmp = new ListNode(carry); 35 nTmp->next = tmp; 36 nTmp = nTmp->next; 37 } 38 return res.next; 39 } 40 };
以上是关于leetcode2. Add Two Numbers的主要内容,如果未能解决你的问题,请参考以下文章