Add Two Numbers(单链表处理)
来源:互联网 发布:rtsp协议端口 编辑:程序博客网 时间:2024/05/22 01:45
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
C++
/** * 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) { ListNode* sum=l1; int flag=0; for(;;) { int val=(l1->val+l2->val+flag)%10; flag=(l1->val+l2->val+flag)/10; l1->val=val; //结束循环条件是其中一个链表到达末尾了 if(l1->next == NULL || l2->next == NULL) { break; } l1=l1->next; l2=l2->next; } //如果l2.Next不为空,就拼接到l1后面,否则不用做什么 if(l2->next!=NULL) { l1->next=l2->next; } //处理进位问题导致的合并之后链表的变更 for(;;) { //结束循环条件就是没有进位了,或到达了链表末尾 if(flag==0 || l1->next==NULL) { break; } l1=l1->next; int val=(l1->val+flag)%10; flag=(l1->val+flag)/10; l1->val=val; } //处理最后一个进位 if(flag>0) { l1->next=new ListNode(flag); } return sum; }};
go:
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { sum:=l1 flag:=0 for{ Val:=(l1.Val+l2.Val+flag)%10 flag=(l1.Val+l2.Val+flag)/10 l1.Val=Val if l1.Next== nil || l2.Next ==nil{ break } l1=l1.Next l2=l2.Next } if l2.Next !=nil { l1.Next=l2.Next } for flag >0 && l1 !=nil && l1.Next != nil{ l1=l1.Next Val:=(l1.Val+flag)%10 flag=(l1.Val+flag)/10 l1.Val=Val } if flag>0{ l1.Next=&ListNode{} l1=l1.Next l1.Val=flag l1.Next=nil } return sum}
0 0
- Add Two Numbers(单链表处理)
- add-two-numbers(单链表相加)
- 【leetcode】【单链表,queue】【2】Add Two Numbers
- LeetCode 2 : Add Two Numbers ---- 单链表相加
- leetcode: 单链表之Add Two Numbers
- Add two numbers & Add binary
- LeetCode: Add Two Numbers
- Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- Add Two Numbers
- LeetCode : Add Two Numbers
- LeetCode Add Two Numbers
- [LeetCode] Add Two Numbers
- LeetCode4: Add Two Numbers
- Leetcode : Add Two Numbers
- Python学习笔记10_错误、调试和测试
- poj 2187 求凸包最远两点距离的平方值
- 卸载编译安装mysql
- struts2 ActionFoward工作流程
- sdutacm-图结构练习——判断给定图是否存在合法拓扑序列
- Add Two Numbers(单链表处理)
- HDU 2050 JAVA
- 蓝桥杯 奇怪的分式
- JAVA LinkedHashSet 和 LinkedHashMap源码剖析
- 西北大学<数字问题>
- 二叉树的遍历
- java版——实现两个数值交换的四种方式
- java面试题
- c++基础之继承