leetcode 445. Add Two Numbers II
来源:互联网 发布:js settimeout管理 编辑:程序博客网 时间:2024/06/05 14:21
题面:
You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first 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.
Follow up:
What if you cannot modify the input lists? In other words, reversing the lists is not allowed.
Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 8 -> 0 -> 7
解题思路:
刚看到题目首先想到的是将链表直接转换成int型,然后用内置类型的加法后再重新生成一条结果链表,但是这样做没有锻炼到关于指针的使用能力,所以还是老老实实地用竖式计算的思想来完成。
因为竖式计算需要将两个加数右对齐,但是题目不允许将链表翻转,所以我们只能利用栈的FILO的特性,将链表的每个结点压栈,最后,只需要一些简单的指针操作就能完成结果链表的生成。
代码如下:
/** * 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) { stack<int> s1, s2; while (l1 != NULL) { s1.push(l1->val); l1 = l1->next; } while (l2 != NULL) { s2.push(l2->val); l2 = l2->next; } int carry = 0; ListNode* result = NULL; while (!s1.empty() && !s2.empty()) { int value = s1.top() + s2.top() + carry; carry = value > 9? 1 : 0; ListNode* temp = new ListNode(value % 10); temp->next = result; result = temp; s1.pop(); s2.pop(); } stack<int> &s = s1.empty()? s2 : s1; while (!s.empty()) { int value = s.top() + carry; carry = value > 9? 1 : 0; ListNode* temp = new ListNode(value % 10); temp->next = result; result = temp; s.pop(); } if (carry == 1) { ListNode* temp = new ListNode(carry); temp->next = result; result = temp; } return result; }};
阅读全文
0 0
- LeetCode 445. Add Two Numbers II
- leetcode-445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- [LeetCode]445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- 【LeetCode】 445. Add Two Numbers II
- LeetCode笔记:445. Add Two Numbers II
- leetcode 445. Add Two Numbers II
- 【Leetcode】445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- Leetcode-445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- leetcode 445. Add Two Numbers II
- leetcode 445. Add Two Numbers II
- [LeetCode] 445. Add Two Numbers II
- [LeetCode]445. Add Two Numbers II
- LeetCode-Jump Game & Jump Game II
- synchronized同步锁放在对象上有效
- 基于c#的windows基础设计(学习日记1)【关于异或运算】
- Makefile基础教程 2
- 数据结构上机实践第二周项目3——体验复杂度
- leetcode 445. Add Two Numbers II
- angularjs学习总结 详细教程
- matlab2c使用c++实现matlab函数系列教程-range函数
- Github上的iOS App源码 (中文)
- LeetCode OJ-129.Sum Root to Leaf Numbers
- Tomcat+JNDI配置
- 来自js精粹里的一些知识点
- Makefile基础教程 3
- 分页查询