概述
给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和,并用链表形式返回结果。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = l1,pre =null;
int more = 0;
while(l1!=null&&l2!=null){
if((l1.val+l2.val+more)>=10){
int num1 = (l1.val+l2.val+more)/10;
int num2 = (l1.val+l2.val+more)%10;
more = num1;
l1.val = num2;
}else{
l1.val = l1.val+l2.val+more;
more = 0;
}
pre = l1;
l1=l1.next;
l2=l2.next;
}
if(l1!=null){
while(more!=0&&l1!=null){
int num1 = (l1.val+more)/10;
int num2 = (l1.val+more)%10;
if(num1>0){
l1.val = num2;
more = num1;
}else{
l1.val = num2;
more=0;
}
pre = l1;
l1=l1.next;
}
}
if(l2!=null){
pre.next = l2;
while(more!=0&&l2!=null){
int num1 = (l2.val+more)/10;
int num2 = (l2.val+more)%10;
if(num1>0){
l2.val = num2;
more = num1;
}else{
l2.val = num2;
more=0;
}
pre = l2;
l2=l2.next;
}
}
if(more>0){
ListNode newNode = new ListNode(more);
pre.next = newNode;
}
return result;
}
}
执行结果:通过
显示详情
执行用时:2 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:39.1 MB, 在所有 Java 提交中击败了17.85%的用户
总结:
典型的以时间换空间的一种做法。
最后
以上就是开放自行车为你收集整理的给定两个用链表表示的整数,每个节点包含一个数位。的全部内容,希望文章能够帮你解决给定两个用链表表示的整数,每个节点包含一个数位。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复