leetcode-Add Two Number
2015-03-09 14:31
351 查看
本篇文章和上篇文章的Add不是同一个问题,从本次的这个题目中不仅能学会怎么解决这种题目,更重要的是他提供了一种怎样解决大数相加的方法。好了,废话不多说,上题目
question:
my thinking:
这个问题其实就是数字相加,从原理上来说就算我们手算再大的数字相加我们也是能算出来的(只要够细心,肯付出时间),而计算机是不能直接计算非常大的数的和的,因为我们知道计算机是有存储限制的,具体到编程语言,每个数据类型也是有其限制的,基本类型的long型占的字节数一般是最多的了吧,但是也只能是8个字节,也就是64位,64位最多能存储多大的数字呢,这里咱们就不算了,总之他是有上限的,所以要是要计算大数据之和,普通的直接相加肯定就不行了,所以这个题目给的方法也是计算大数之和的方法之一。
那么接下来介绍一下我解决这个问题的思路,一句话概括就是利用链表来模拟我们手算两数之和的过程。多了不解释,自己看能不能理解吧,上代码–>
my Answer:
要是上官网做题的话,你会看到人家给出了ListNode这个结构体的成员,即:
结果肯定是Accepted的了,不然我也不敢放上来,大家有好的方法希望能多交流
question:
my thinking:
这个问题其实就是数字相加,从原理上来说就算我们手算再大的数字相加我们也是能算出来的(只要够细心,肯付出时间),而计算机是不能直接计算非常大的数的和的,因为我们知道计算机是有存储限制的,具体到编程语言,每个数据类型也是有其限制的,基本类型的long型占的字节数一般是最多的了吧,但是也只能是8个字节,也就是64位,64位最多能存储多大的数字呢,这里咱们就不算了,总之他是有上限的,所以要是要计算大数据之和,普通的直接相加肯定就不行了,所以这个题目给的方法也是计算大数之和的方法之一。
那么接下来介绍一下我解决这个问题的思路,一句话概括就是利用链表来模拟我们手算两数之和的过程。多了不解释,自己看能不能理解吧,上代码–>
my Answer:
c++ ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { ListNode *head,*temp; ListNode *head1=l1,*head2=l2; int more10 = 0; while(head1!=NULL && head2!=NULL){ int sum = head1->val + head2->val +more10; if(sum>9){ more10 = 1; sum = sum%10; }else{ more10 = 0; } ListNode *newNode = new ListNode(sum); if(head1 == l1){ head = newNode; temp = head; }else{ temp->next = newNode; temp = newNode; } head1 = head1->next; head2 = head2->next; } if(head1!=NULL || head2!=NULL){ ListNode *leave = head1==NULL?head2:head1; while(leave!=NULL){ int sum = leave->val + more10; if(sum>9){ sum = sum%10; more10 = 1; }else{ more10 = 0; } ListNode *newNode = new ListNode(sum); temp->next = newNode; temp = newNode; leave = leave->next; } } if(more10==0){ return head; }else{ ListNode *newNode = new ListNode(1); temp->next = newNode; return head; } return head; }
要是上官网做题的话,你会看到人家给出了ListNode这个结构体的成员,即:
c++ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
结果肯定是Accepted的了,不然我也不敢放上来,大家有好的方法希望能多交流
相关文章推荐
- [Leetcode] Add Two Number
- LeetCode--Add two Number II
- LeetCode---(2) Add Two Number
- LEETCODE: Add Two Number
- LeetCode(Add Two Number)
- leetcode----Add Two Number 中学到的有关变量在内存中分配的问题
- LeetCode: Add Two Number(已解原先出现的问题)
- LeetCode笔记 -- Add Two Number
- LeetCode 2 Add Two Number
- LeetCode- Add two number I
- LeetCode Add Two Number
- [LeetCode]002-AddTwoNumber
- Add Two Number - Leetcode
- Leetcode练习-Add Two Number
- Leetcode 2. Add Two Number
- LeetCode-2.Add Two Number-Attemped using C
- LeetCode Interview Qustions: Add Two Number
- leetcode add two number
- 【LeetCode】Merge Two Sorted Lists和Add TwoNumber解题报告
- [LeetCode By Python] 2 Add Two Number