【java】面试题 02.05. 链表求和---注意细节,避免踩坑!!!
发布日期:2021-05-07 02:22:49 浏览次数:19 分类:原创文章

本文共 1074 字,大约阅读时间需要 3 分钟。

给定两个用链表表示的整数,每个节点包含一个数位。

这些数位是反向存放的,也就是个位排在链表首部。

编写函数对这两个整数求和,并用链表形式返回结果。

示例:

输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912
进阶:思考一下,假设这些数位是正向存放的,又该如何解决呢?

示例:

输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
输出:9 -> 1 -> 2,即912
在这里插入图片描述

代码:public ListNode addTwoNumbers(ListNode l1, ListNode l2) {   		    ListNode head1=l1,head2=l2,p1=head1;		    int a=0;			while(l1!=null&&l2!=null) {   				 p1=l1;				 int b=l1.val+l2.val+a;				 l2.val=l1.val=b%10;				 a=b/10;				 l1=l1.next;				 l2=l2.next;			}			if(a==0) {   				return l1==null?head2:head1;			}			int b=0;			int k=0;			if(l1==null&&l2!=null) {   				k=2;				while(l2!=null) {   					b=l2.val+a;					l2.val=b%10;					a=b/10;					p1=l2;					if(a==0) {   						return head2;					}					l2=l2.next;				}			}else			if(l1!=null&&l2==null) {   			   while(l1!=null) {   				b=l1.val+a;				l1.val=b%10;				a=b/10;				p1=l1;				if(a==0) {   					return head1;				}				l1=l1.next;				}			}			    ListNode p=new ListNode(a);				p.val=a;				p1.next=p;				p.next=null;				if(k==2) {   					return head2;				}			return head1;		 }
上一篇:【java】368. 最大整除子集---使用动态规划,快速解决子问题!!!
下一篇:【java】面试题 02.04. 分割链表---利用快速排序的双指针思想,避免踩坑!!!

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月28日 03时27分26秒