博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链式A+B
阅读量:6826 次
发布时间:2019-06-26

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

题目描述

有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。

给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。

测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}
import java.util.*;/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Plus {    public ListNode plusAB(ListNode a, ListNode b) {        // write code here        int jin=0;        ListNode c=new ListNode(0);        ListNode head=c;        int val;        while(a!=null||b!=null||jin==1){            int aval=a==null?0:a.val;            int bval=b==null?0:b.val;            val=aval+bval+jin;             jin=val/10;            val=val%10;            c.next=new ListNode(val);            c=c.next;            a=a==null?null:a.next;            b=b==null?null:b.next;            }              return head.next;            }}

自己第一遍通过的代码和如上思路一致,只是没有使用三目运算符,也没把a,b为null和进位为1总结到一起,if else显得代码冗长。此题有如下几个注意点:

1.因为while循环中每次都是c.next=new.........,所以第一个节点就是个特例了,为了方便可以在最开始设置一个作为头结点(最后输出他的next域),将第一个节点也和后面的节点归为一类插入。

2.正常思路是需要判断a是否结束了,b是否结束了,分情况讨论。这里用一个三目运算符,当其中一个为null的时候设置他为0即可。

3.如果最高位的1是次高位进位的,那么正常思路的情况最后一个1是没法取到的,因为最后判断a,b都为null就结束,所以判定条件为 a!=null||b!=null||jin==1

4.最后在a=a.next的时候,因为a可能是null,所以在这个时候用一个三目运算符判断如果为null则他的下一次循环还按照null来,不取a.next了,也就不会有越界问题

5.最开始的c还有一个copy为head,因为c随着链表在向后移动,防止最后输出找不到头结点。最后输出head.next

转载于:https://www.cnblogs.com/tobemaster/p/5874182.html

你可能感兴趣的文章
统计学中抽样调查和一些常用的方法
查看>>
网站安全问题针对一句话木马函数的普析与防范
查看>>
众安保险的云上之路
查看>>
减少设备的能耗,Oculus收购爱尔兰初创公司InfiniLED
查看>>
PHP 8 确认支持 JIT
查看>>
手势再也不是相机前的Pose,它还能指导机器人做手术!
查看>>
SoJpt Boot 2.0-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发
查看>>
java.lang.RuntimeException: Fail to connect to camera service问题
查看>>
中国“芯”时代未至,何谈“互联网+”?
查看>>
STF环境问题篇(MAC)
查看>>
Android Studio 3.3.2 稳定版发布,Bug 修复版本
查看>>
Veeam成立十周年,展望未来十年的科技发展
查看>>
Apollo,让机器人开发更简单
查看>>
Linux防火墙iptables规则设置(转)
查看>>
C语言中getch()、getche()和getchar()
查看>>
厂商“阅兵”:从2015年IFA看消费电子发展新趋势
查看>>
2020年,1000亿个智能终端驱动嵌入式闪存高速发展
查看>>
精选10大机器学习开源项目 !(附链接)
查看>>
中国电信“商密云存储系统”通过国家商用密码产品鉴定
查看>>
用区块链技术养走地鸡,我认真的
查看>>