LeetCode习题笔记——Add Two Numbers
2017-10-14 20:04
435 查看
这次问题看起来是两个数之和,其实主要考察两数相加中进位和对链表的一些基本操作,原题如下:
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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
大意两个数字都是用链表反向保存(如2 -> 4 -> 3表示342),之后相加结果也用这个方式输出
解决方式其实并不困难,甚至题目这个反向保存让这个题目更容易解决,因为个位十位百位是反向的,所以我们遍历链表的时候就只用顺序遍历(相加的时候是从个位数开始相加,再判断进位,在进行下一位)。代码如下:
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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
大意两个数字都是用链表反向保存(如2 -> 4 -> 3表示342),之后相加结果也用这个方式输出
解决方式其实并不困难,甚至题目这个反向保存让这个题目更容易解决,因为个位十位百位是反向的,所以我们遍历链表的时候就只用顺序遍历(相加的时候是从个位数开始相加,再判断进位,在进行下一位)。代码如下:
class Solution { public: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { ListNode *head = (ListNode *)malloc(sizeof(ListNode)); ListNode *pre = head; ListNode *node = NULL; //进位 int c = 0,sum,val1,val2; //加法 while(l1 != NULL || l2 != NULL || c != 0){ val1 = (l1 == NULL ? 0 : l1->val); val2 = (l2 == NULL ? 0 : l2->val); sum = val1 + val2 + c; c = sum / 10; node = (ListNode *)malloc(sizeof(ListNode)); node->val = sum % 10; node->next = NULL; //尾插法 pre->next = node; pre = node; l1 = (l1 == NULL ? NULL : l1->next); l2 = (l2 == NULL ? NULL : l2->next); } return head->next; } };
相关文章推荐
- 【leetcode刷题笔记】Add Two Numbers
- Leetcode解题笔记 2.Add Two Numbers [Medium]
- LeetCode刷题笔记(链表):add-two-numbers
- leetcode笔记--Add Two Numbers
- LeetCode解题笔记2 Add Two Numbers
- (python)leetcode刷题笔记 02 Add Two Numbers
- Add two numbers [LeetCode]
- LeetCode2:Add Two Numbers
- 【leetcode】Add Two Numbers
- Leetcode 503,Add two numbers without using arithmetic operators
- 【leetcode】【单链表,queue】【2】Add Two Numbers
- LeetCode修仙:Add Two Numbers
- 【leetcode】 Add Two Numbers
- LeetCode---Add Two Numbers
- LeetCode-Add Two Numbers
- leetcode--Add Two Numbers
- LeetCode:Add Two Numbers
- LeetCode 2.Add Two Numbers
- leetcode_2:add two numbers