2021年阿里笔试题分享——大数相加(附源码)(代码片段)

神技圈子 神技圈子     2023-03-27     645

关键词:

2021年阿里笔试题分享(一)

原题描述

废话不多说,这道题题目描述如下

/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2021 All Rights Reserved.
 */
 //对单链表表示的大数进行求和:1->2->3+4->5=1->6->8 (123+45=168)。

审题

 这是我们这个系列第一篇文章,首先来分享一道阿里笔试题。阿里一般是面试官通过邮件发送过来,要求一个小时内完成。其实时间还是挺紧的,一般做题步骤是15-20分钟左右思考,然后30-40分钟编写代码。对于笔试经验少的童鞋,最好多拿几家笔试来练练手,否则容易一上来紧张后懵了。
 为什么先选这道题来讲,目的就是给童鞋们敲一个警钟,很多童鞋一般喜欢买个刷题课程或者看别人文章,很多课程基本都是把一些代表性的LeetCode题目解法讲一遍。作为过来人可以很负责的告诉你。如果只靠这些就觉得自己已经掌握了LeetCode上的题目那就大错特错了。因为不经过平时自我严格的训练,很可能由于紧张现场翻车。

做题过程还原

 刚拿到题目的时候千万不能慌,先多读读题。这道题的意思是两个非空单链表,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。

思路

对于阿里好多笔试题并不是LeetCode原题,但是这个题其实和LeetCode的第2题两数相加非常像了。区别就是LeetCode的第2题中的题目已经把链表转置好了,结果不需要转置回去。
所以看到了吧,大家平时要刷题的话题目一定要首先自己做一做才能加深印象,笔试的时候才不会怕。这个题的思路如下

  1. 将两个链表进行转置;
  2. 创建新链表;
  3. 同时遍历两个链表,逐位计算它们的和,并与当前位置的进位值相加。假设当前两个链表处相应位置的数字为 n1,n2,假设进位值为 carry,则它们的和为 n1+n2+carry。每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值
  4. 如果两个链表全部遍历完毕后,进位值为 1,则在新链表最前方添加节点 1。
  5. 对新链表进行转置

该题代码如下

public class BigSum 
     static class ListNode 
        private ListNode next;

        private int value;

        ListNode(int value) 
            this.value = value;
        
        public ListNode getNext() 
            return next;
        

        public void setNext(ListNode next) 
            this.next = next;
        

        public int getValue() 
            return value;
        

        public void setValue(int value) 
            this.value = value;
        
    

    public static  ListNode addTwoList(ListNode first, ListNode second) 
        //必须合法
        if (null == first || null == second) 
            return null;
        
        ListNode reverseFirst = reverseList(first);
        ListNode reverseSend = reverseList(second);
        ListNode temFirst = reverseFirst;
        ListNode temSecond = reverseSend;
        ListNode resultList = new ListNode(-1);
        ListNode p = resultList;
        int flag = 0;
        while (temFirst != null || temSecond != null) 
            int temp = flag;
            if (temFirst != null) 
                temp += temFirst.value;
                temFirst = temFirst.next;
            
            if (temSecond != null) 
                temp += temSecond.value;
                temSecond = temSecond.next;
            
            if (temp > 9) 
                temp -= 10;
                flag = 1;
             else 
                flag = 0;
            
            ListNode node = new ListNode(temp);
            p.next = node;
            p = p.next;
        
        if (flag == 1) 
            ListNode node = new ListNode(1);
            p.next = node;
        
        return reverseList(resultList.next);
    

    //翻转链表
    public static ListNode reverseList (ListNode targetList) 
        ListNode newhead = null;
        while (targetList != null) 
            ListNode temp = targetList.next;
            targetList.next = newhead;
            newhead = targetList;
            targetList = temp;
        
        return newhead;
    

   // 1->2->3+4->5=1->6->8 (123+45=168)
    public static void main(String[] args) 
        ListNode first = new ListNode(1);
        
        ListNode two = new ListNode(2);
        ListNode three = new ListNode(3);
        first.setNext(two);
        two.setNext(three);
        
        
        
        ListNode second = new ListNode(4);
        ListNode five = new ListNode(5);
        second.setNext(five);
        
        ListNode result =  addTwoList(first,second);
        
        
    
    

2021阿里+头条+腾讯等大厂java笔试题分享,含答案解析

阿里系的lazada一面现场(50min)①sync的底层实现,锁优化,和lock的对⽐等②jvm参数调优详细过程,到为什么这么设置,好处,⼀些gc场景,如何去分析gc⽇志③redis数据结构,使⽤场景,微博... 查看详情

网易笔试题——算法岗(代码片段)

目录1、大数相乘2、大数相加3、大数相减1、大数相乘publicstaticvoidbigNumberSimpleMulti(Stringf,Strings)System.out.print("乘法:"+f+"*"+s+"=");//获取首字符,判断是否是符号位,先处理符号位charsignA=f.charAt(0);charsignB=s.charAt(0);charsign=\'+\';if( 查看详情

2021年阿里腾讯字节等大厂技术面试题汇总,西安富士通java笔试题

finalize的工作原理一个对象的创建过程对象的销毁是按照创建的逆序来进行的final的方法和类都不允许覆盖和继承。private默认实现了final。简述jvm中默认的classLoader与功能简述内部类的特点如何终止一个线程null可以被强制类型转... 查看详情

2021最新春招asp.netcore笔试题附答案(代码片段)

.NETCore笔试题1.如何在ASP.NETCore中激活Session功能?首先要添加session包.其次要在configservice方法里面添加session。然后又在configure方法里面调用usesession。。2.什么是中间件?中间件在这里是指注入到应用中处理请求和响应的组... 查看详情

阿里巴巴2021秋招笔试题20210806(代码片段)

源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/exam-alibaba/exam-alibaba-20210806第一题题目描述大概定义了一年mmm个月,一个月ddd天,一周www天已知mmm,ddd,www求第kkk年,第jjj月 查看详情

mysql数据库笔试题,阿里一线架构师分享的技术图谱,进阶加薪全靠它

1.2Spring复习大纲:依赖注入Ioc+Beans+注解+数据访问+AOP+MVC等1.3Spring全家桶笔记:Spring+SpringBoot+SpringCloud+SpringMVC面试题(含解析)+学习书籍+学习思维脑图02分布式架构近几年目前分布 查看详情

阿里笔试题2021.8.16(模拟小修改的并查集)(代码片段)

阿里笔试题2021.8.16也是帮同学做的,给自己做的笔试题就猿辅导,还一面就挂,等会总结下面试问的几个问题第一题:计算变量的大小题目描述思路简单的模拟思路,把字符串分割以后计算长度就行了importjava.... 查看详情

html阶段笔试题-附答案

   问题:请分别写出HTML中块标签、行标签以及行块标签的特点。(10分)本题目的:清晰掌握行标签、块标签、行块标签的区别答案:          块级元素:     &nb... 查看详情

2020年冬季前端笔试题总结(代码片段)

原文地址:一些特别棒的面试题[4]最近面试了一些公司,拿了一些offer,不记录概念题目,仅记录coding类题目。小伙伴们空闲时间可以做这些题目练练手。只出现一次的数字汇总区间实现红绿灯效果数组去重返回excel表格列名检... 查看详情

阿里巴巴2021秋招笔试题20211119(代码片段)

源代码:https://gitee.com/shentuzhigang/algorithm/tree/master/exam-alibaba/exam-alibaba-20211119第一题题目大意:有长度为n的数组a有k次机会在连续长度不超过m的区间每个元素+1使得数组全部元素变成偶数importjava.util.LinkedList;importjava.util... 查看详情

阿里笔试——重庆阿里笔试题总结

        查看详情

阿里笔试——北京阿里笔试题总结

       查看详情

计算机网络笔试题附解析——每天学一点,天天都进步

大家好我是小贺,我今天又带着我的笔试题来了,每天几道笔试题和我一起学习一起进步,话不多说直接上题1.ping是基于下面哪个协议?IPUDPTCPICMP解析在这里ping命令基于TCP/IP所属的ICMP协议。ICMP是Internet控制报文协议&#x... 查看详情

计算机网络笔试题附解析——每天学一点,天天都进步

大家好我是小贺,我今天又带着我的笔试题来了,每天几道笔试题和我一起学习一起进步,话不多说直接上题1.ping是基于下面哪个协议?IPUDPTCPICMP解析在这里ping命令基于TCP/IP所属的ICMP协议。ICMP是Internet控制报文协议&#x... 查看详情

计算机网络笔试题附解析——每天学一点,天天都进步

大家好我是小贺,我今天又带着我的笔试题来了,每天几道笔试题和我一起学习一起进步,话不多说直接上题咯1.IPv4版本的因特网总共有多少有效A类地址网络()255128256126解析在这里A类IP地址范围从1.0.0.0到126.0.0.0。可... 查看详情

计算机网络笔试题附解析——每天学一点,天天都进步

大家好我是小贺,我今天又带着我的笔试题来了,每天几道笔试题和我一起学习一起进步,话不多说直接上题咯1.IPv4版本的因特网总共有多少有效A类地址网络()255128256126解析在这里A类IP地址范围从1.0.0.0到126.0.0.0。可... 查看详情

计算机网络笔试题附解析——每天学一点,天天都进步

大家好我是小贺,我今天又带着我的笔试题来了,每天几道笔试题和我一起学习一起进步,话不多说直接上题咯1.假设在x86平台上,有-个int型变量在内存中的内部由低到高分别是:0x12,0x34,0x56,0x78当通过网络发送该... 查看详情

计算机网络笔试题附解析——每天学一点,天天都进步

大家好我是小贺,我今天又带着我的笔试题来了,每天几道笔试题和我一起学习一起进步,话不多说直接上题咯1.假设在x86平台上,有-个int型变量在内存中的内部由低到高分别是:0x12,0x34,0x56,0x78当通过网络发送该... 查看详情