LeetCode 2: Add Two Numbers
来源:互联网 发布:百度自动推送代码js 编辑:程序博客网 时间:2024/06/06 21:07
Add Two Numbers
You are given two linked lists representing two non-negative numbers. 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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
解题思路
需要注意如下几点:
1. 数字是按逆序存放的;
2. 链表l1或l2可能为空;
3. 链表l1和l2长度可能不同;
4. 2个数相加,可能会产生最高位的进位,因此要注意在完成以上1-3的操作后,判断进位是否为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) { if (l1 == NULL) return l2; if (l2 == NULL) return l1; int jinwei = 0; ListNode *result = NULL, *tail = NULL; while (l1 != NULL && l2 != NULL) { int value = l1->val + l2->val + jinwei; jinwei = value / 10; ListNode *temp = new ListNode(value%10); if (result == NULL) { result = tail = temp; } else { tail->next = temp; tail = temp; } l1 = l1->next; l2 = l2->next; } while (l1 != NULL) { int value = l1->val + jinwei; jinwei = value / 10; ListNode *temp = new ListNode(value%10); tail->next = temp; tail = temp; l1 = l1->next; } while (l2 != NULL) { int value = l2->val + jinwei; jinwei = value / 10; ListNode *temp = new ListNode(value%10); tail->next = temp; tail = temp; l2 = l2->next; } if (jinwei > 0) { ListNode *temp = new ListNode(jinwei); tail->next = temp; tail = temp; } return result; }};
0 0
- LeetCode 2 - Add Two Numbers
- LeetCode 2: Add Two Numbers
- Leetcode: Add Two Numbers (2)
- [leetcode 2] Add Two Numbers
- [Leetcode] 2 - Add Two Numbers
- LeetCode 2:《Add Two Numbers》
- LeetCode | #2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [Leetcode]2Add Two Numbers
- leetcode #2 Add Two Numbers
- leetcode-2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [leetcode] #2 Add Two Numbers
- LeetCode-2 Add Two Numbers
- LeetCode-2-Add Two Numbers
- Leetcode[2] Add Two Numbers
- LeetCode 2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [网易面试]自己总结(三)
- 反射与注入依赖问题
- Git日常笔记总结
- hadoop的布暑方式 笔记二
- 使用hadoop自带的例子作测试 笔记三
- LeetCode 2: Add Two Numbers
- yii框架笔记—后台
- Ruby on Rails bundle install 缺失模块安装
- Android应用程序之数据存储(一)
- Hadoop中eclipse 插件的编译 笔记四
- <LeetCode><Easy> 172 Factorial Trailing Zeroes
- 删除打印机(win7)
- IOS网络笔记--ASIHTTP类库的使用(网络监测)
- centos 的使用