leetcode002 Add Two Numbers
2015-09-26 22:26
417 查看
题目:
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
思路:
一个链表,代表两个数字,从低位往高位加,用一个链表输出结果。无太巧妙的思路,就是从低位往高位一个个加,用一个bool值表示进位。不过要注意一些易错的地方:1、注意两个链表的长度可能不相等 2、有可能两个链表都走到末尾,但是还剩下一个进位不要忘记加上。主要易错点就是这两点
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
bool isAdd = false;
ListNode* root = NULL;
ListNode* cur = root;
while(l1 != NULL || l2 != NULL || isAdd)
{
int t = isAdd;
if(l1 != NULL) {
t += l1->val;
l1 = l1->next;
}
if(l2 != NULL) {
t += l2->val;
l2 = l2->next;
}
if(t >= 10){
t = t - 10;
isAdd = true;
}else{
isAdd = false;
}
if(cur == NULL){
root = new ListNode(t);
cur = root;
}else{
ListNode* newNode = new ListNode(t);
cur->next = newNode;
cur = cur->next;
}
}
return root;
}
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
思路:
一个链表,代表两个数字,从低位往高位加,用一个链表输出结果。无太巧妙的思路,就是从低位往高位一个个加,用一个bool值表示进位。不过要注意一些易错的地方:1、注意两个链表的长度可能不相等 2、有可能两个链表都走到末尾,但是还剩下一个进位不要忘记加上。主要易错点就是这两点
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
bool isAdd = false;
ListNode* root = NULL;
ListNode* cur = root;
while(l1 != NULL || l2 != NULL || isAdd)
{
int t = isAdd;
if(l1 != NULL) {
t += l1->val;
l1 = l1->next;
}
if(l2 != NULL) {
t += l2->val;
l2 = l2->next;
}
if(t >= 10){
t = t - 10;
isAdd = true;
}else{
isAdd = false;
}
if(cur == NULL){
root = new ListNode(t);
cur = root;
}else{
ListNode* newNode = new ListNode(t);
cur->next = newNode;
cur = cur->next;
}
}
return root;
}
相关文章推荐
- 调整Mysql中insert、update、delete的顺序来以提高效率
- 中小企业代码上线流程图(二)
- Java输出一个对象
- C++输入cout与输出cin
- 嵌入式学习笔记(虚拟机共享文件夹配置-Ubuntu系统中)
- Java 常用正则表达式
- Spring(六):Bean 的作用域
- 关于java中除0的问题
- linux内核设计与实现--内存寻址
- ubuntu14.04 LTS安装firefox最新版
- 面对对象思想5
- linux shell 数组建立及使用技巧
- sqlserver分页查询语句
- acm刷题篇-0x3f3f3f3f作为无穷大常量的设置技巧详解
- Shiro简介
- leetcode001 Two Sum
- iOS开发的就业形势怎么样
- 579B(Finding Team Member)
- Android自定义控件之日历控件
- iOS开发笔记-Bundle包