概述
数据结构是单向链表,并且是按照算数进行的。
思路如下
原结果
1 2 3 4
3 4
1 2 6 8
思路结果
4 3 2 1
4 3
8 6 2 1
1 2 6 8
大致就是单向链表的翻转,然后进行计算,然后在翻转。即可得出答案。本人才疏学浅只会写一种写法。
// 定义的单向基本链表结构
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
class SolutionAdd {
//翻转方法,把单向链表翻转
public ListNode fanzhuan(ListNode listNode){
ListNode pre = null;
ListNode succ = null;
while (listNode != null) {
succ = listNode.next;
listNode.next = pre;
pre = listNode;
listNode = succ;
}
return pre;
}
//计算的单向链表求和
public ListNode add(ListNode node1, ListNode node2) {
ListNode listNode = new ListNode(0);
ListNode p = listNode;
int sum = 0;
while (node1 != null || node2 != null || sum!=0) {
if (node1 != null) {
sum += node1.val;
node1 = node1.next;
}
if (node2 != null) {
sum += node2.val;
node2 = node2.next;
}
p.next = new ListNode(sum % 10);
sum = sum / 10;
p = p.next;
}
return listNode.next;
}
}
public class Main {
public static void main(String[] args) {
//装载模拟数据 start
ListNode listNode1 = new ListNode(1);
ListNode listNode2 = new ListNode(2);
ListNode listNode3 = new ListNode(3);
ListNode listNode4 = new ListNode(4);
listNode1.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
ListNode listNode5 = new ListNode(3);
ListNode listNode6 = new ListNode(4);
listNode5.next = listNode6;
//装载模拟数据 end
SolutionAdd solutionAdd = new SolutionAdd();
//翻转链表listNode1
ListNode fanzhuan = solutionAdd.fanzhuan(listNode1);
//翻转链表listNode5
ListNode fanzhuan1 = solutionAdd.fanzhuan(listNode5);
//进行计算
ListNode add = solutionAdd.add(fanzhuan, fanzhuan1);
//再次翻转得到结果
ListNode fanzhuan3 = solutionAdd.fanzhuan(add);
//输出最后的单链表记录
System.out.print(fanzhuan3.val); //1
System.out.print(fanzhuan3.next.val); //2
System.out.print(fanzhuan3.next.next.val); //6
System.out.print(fanzhuan3.next.next.next.val); //8
}
}
最后
以上就是魔幻戒指为你收集整理的算法面试题-用单向链表表示十进制整数,求两个正整数之和。1234+34=1268的全部内容,希望文章能够帮你解决算法面试题-用单向链表表示十进制整数,求两个正整数之和。1234+34=1268所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复