<LeetCode OJ> 2. Add Two Numbers
来源:互联网 发布:php大数据处理 编辑:程序博客网 时间:2024/06/08 11:46
总接受:151227总提交:638158困难:中等
给你两个链表表示两个非负数字。数字以相反的顺序存储链表中,每个节点代表数字的一位。
相加两个链表代表的数字并返回一个链表。
输入:(2 - > 4 - > 3)+(5 - > 6 - > 4)
输出:7 - > 0 - > 8
分析:
朴素的模拟思想,先相加(从链表头,低位),再进位即可,基础代码编写能力!
空间复杂度为O(N),时间复杂度为O(N)
N是两个链表的较长者
/** * 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) { //于2016.6.10徒手重写 int val1=0; int val2=0; int carry=0; ListNode* head=new ListNode(0); ListNode* move=head; bool flagfirst=true; while(l1!=NULL || l2!=NULL) { val1=0; if(l1!=NULL) { val1=l1->val; l1=l1->next; } val2=0; if(l2!=NULL) { val2=l2->val; l2=l2->next; } if(flagfirst) { flagfirst=false; head->val= (val1+val2+carry)%10; carry=(val1+val2+carry)/10; }else{ ListNode* newnode=new ListNode(0); newnode->val=(val1+val2+carry)%10; carry=(val1+val2+carry)/10; move->next=newnode; move=newnode; } } if(carry) { ListNode* newnode=new ListNode(carry); move->next=newnode; } return head; }};
别人的算法:
(思路一样!)
class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int carry = 0; ListNode* head = new ListNode(0); ListNode* curNode = head; while(l1 != NULL || l2 != NULL){ int val1 = 0; if(l1 != NULL){ //来自链表1的值 val1 = l1->val; l1 = l1->next; } int val2 = 0; if(l2 != NULL){ //来自链表2的值 val2 = l2->val; l2 = l2->next; } int value = val1 + val2 + carry; ListNode* newNode= new ListNode(value % 10); curNode->next = newNode; carry = value / 10; //进位 curNode = curNode->next; } if(carry > 0) curNode->next = new ListNode(carry); return head->next; }};
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50488439
原作者博客:http://blog.csdn.net/ebowtang
1 0
- <LeetCode OJ> 2. Add Two Numbers
- LeetCode OJ 2.Add Two Numbers
- LeetCode OJ 2. Add Two Numbers
- LeetCode OJ(2.Add Two Numbers)
- LeetCode OJ-2.Add Two Numbers
- LeetCode OJ:Add Two Numbers
- LeetCode OJ - Add Two Numbers
- LeetCode OJ Add Two Numbers
- LeetCode OJ - Add two Numbers
- LeetCode OJ ----Add Two Numbers
- LeetCode OJ:Add Two Numbers
- Leetcode OJ:Add Two Numbers
- 2. Add Two Numbers——LeetCode OJ
- [LeetCode OJ][002]Add Two Numbers
- 【LeetCode OJ 002】Add Two Numbers
- LeetCode OJ #2 Add Two Numbers
- LeetCode OJ 02 Add Two Numbers
- LeetCode OJ : 2 Add Two Numbers
- leetcode之Swap Nodes in Pairs
- iOS NSTimer详解
- Ubuntu15.10 apache2 使用HTTPS
- Linux下串口设备的使用
- 能否改变UIDatePicker的大小?怎么改变
- <LeetCode OJ> 2. Add Two Numbers
- Android 使用APICloude 数据库的方法
- hdu 2566 统计硬币 数学解法
- WAMP 修改默认根目录www
- CSS学习笔记——CSS中定位的浮动float
- 关于em px rem 的总结
- Java 统计字符串里英文字母、空格、数字和其它字符的个数
- 深入研究socket编程(4)——并发服务器(TCP)
- MyEclipse 中没有 add hibernate capabilities 的解决方法