链表A+B
来源:互联网 发布:seo外链工具有用吗? 编辑:程序博客网 时间:2024/05/29 10:43
声明:此题解题思路转自牛客网论坛,地址:牛客网难题论坛
题目描述
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。
给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。
测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}
解题思路:本题的思路很简单,按照小学数学中学习的加法原理从末尾到首位,对每一位对齐相加即可。技巧在于如何处理不同长度的数字,以及进位和最高位的判断。这里对于不同长度的数字,我们通过将较短的数字补0来保证每一位都能相加。
public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } public ListNode plusAB(ListNode a, ListNode b) { ListNode resHead = new ListNode(-1); ListNode resCur = resHead; ListNode curA = a; ListNode curB = b; int addBit = 0,sum = 0; int x,y; if (a==null ||b == null) { return null; } //curA = 0&&curB=0&&addBit =0 说明运算结束 while (curA!=null||curB!=null||addBit != 0) { //位数不够补0 x = curA !=null ?curA.val:0; y = curB !=null ?curB.val:0; sum = x+y+addBit; resCur.next = new ListNode(sum%10); resCur = resCur.next; addBit = sum/10; //?为什么不可以直接赋值 curA = curA!=null?curA.next:null; curB =curB!=null? curB.next:null; } return resHead.next; }
0 0
- 链表A + B
- 链表A+B
- 链表A+B
- 链表A+B
- a>b?a:b
- a+b
- a+++b
- A + B
- A+B
- A+B
- {A} + {B}
- a+++b
- A+B
- A-B
- A+B
- A + B
- A|B?
- A+B
- Spring Bean Scope 有状态的Bean 无状态的Bean
- 第七周排队看病模拟(队列)
- python中的列表推导浅析
- 第8周项目5-计数的模式匹配
- 第八周项目2-建立链串的算法库
- 链表A+B
- [Err] 1292 - Truncated incorrect DOUBLE value: 'c5dbc300-6e56-4ef7-9644-78b1fbf47668'
- for循环与for...in循环JS
- 内存管理
- 第8周项目5 计数的模式匹配
- 浅析Android中的优化
- Mr. Process的一生-Linux内核的社会视角 (1)调度
- Xenomai 多内核系统支持
- 浅谈命令查询职责分离(CQRS)模式