链表求和
2017-03-27 21:56
218 查看
描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中
样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
实现思路:首先如果两个链表当中有一个是空链表,就把另一个链表原样输出。另外,还要判断两个链表当中的元素个数的多少,方便进行加和运算。当两个对应元素相加,和大于十的时候,要把十位数字写在链表的下一个位置。
代码:/**
ListNode *addLists(ListNode *l1, ListNode *l2) {
// write your code here
if (l1 == NULL)
return l2;
if (l2 == NULL)return l1;
int c = 0;
int sum = 0;
ListNode *head = new ListNode(0);
ListNode *p = head;
while (l1 != NULL && l2 != NULL) {
sum = l1->val+l2->val + c;
c = sum/10;
sum = sum%10;
p->next = new ListNode(sum);
p = p->next;
l1 = l1->next;
l2 = l2->next;
}
while (l1 != NULL) {
sum = l1->val + c;
c = sum/10;
sum = sum%10;
p->next = new ListNode(sum);
p = p->next;
l1 = l1->next;
}
while (l2 != NULL) {
sum = l2->val + c;
c = sum/10;
sum = sum%10;
p->next = new ListNode(sum);
p = p->next;
l2 = l2->next;
}
if (c != 0) p->next = new ListNode(c);
return head->next;
}
};
做题感想:这道题看起来很简单,可是做起来觉得并不容易。前面的几种情况还好,到了后面元素相加的时候,就一直存在着wrong answer,总是有数据通不过。后来弯弯转转才改对。
相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
实现思路:首先如果两个链表当中有一个是空链表,就把另一个链表原样输出。另外,还要判断两个链表当中的元素个数的多少,方便进行加和运算。当两个对应元素相加,和大于十的时候,要把十位数字写在链表的下一个位置。
代码:/**
ListNode *addLists(ListNode *l1, ListNode *l2) {
// write your code here
if (l1 == NULL)
return l2;
if (l2 == NULL)return l1;
int c = 0;
int sum = 0;
ListNode *head = new ListNode(0);
ListNode *p = head;
while (l1 != NULL && l2 != NULL) {
sum = l1->val+l2->val + c;
c = sum/10;
sum = sum%10;
p->next = new ListNode(sum);
p = p->next;
l1 = l1->next;
l2 = l2->next;
}
while (l1 != NULL) {
sum = l1->val + c;
c = sum/10;
sum = sum%10;
p->next = new ListNode(sum);
p = p->next;
l1 = l1->next;
}
while (l2 != NULL) {
sum = l2->val + c;
c = sum/10;
sum = sum%10;
p->next = new ListNode(sum);
p = p->next;
l2 = l2->next;
}
if (c != 0) p->next = new ListNode(c);
return head->next;
}
};
做题感想:这道题看起来很简单,可是做起来觉得并不容易。前面的几种情况还好,到了后面元素相加的时候,就一直存在着wrong answer,总是有数据通不过。后来弯弯转转才改对。
相关文章推荐
- 【Java】对两个用链表表示的整数求和
- 数据结构 第二章 单链表应用举例——一元多项式求和(待补充)
- lintcode-链表求和
- 链表求和
- 167. 链表求和(add-two-numbers)(c++)----lintcode面试题之链表
- lintcode ----链表求和
- 面试金典--对链表表示的整数求和
- Linkcode 167 链表求和
- 链表求和-LintCode
- LintCode-链表求和
- 程序员面试经典--双链表求和
- 链表求和
- leetcode——Add Two Numbers 两个链表表示的正整数对其求和(AC)
- 单链表应用--一元多项式求和
- 链表多项式求和
- LintCode-第168题 链表求和
- 数据结构实践——链表:多项式求和
- 链表求和
- lintcode 167 链表求和
- 167 - 链表求和