首页 > 编程知识 正文

阿里巴巴官网,阿里笔试题

时间:2023-05-03 15:16:15 阅读:34480 作者:3893

2021年支付宝问题共享(1)原题描述审查问题制作过程的恢复构想

原题说明

不言而喻,这个问题的主题记述如下

/**AliPay.cominc.*copyright(c ) 2004-2021 all rights reserved.*///单链表中显示的数量合计:1-2-3(4-5=1- ) 蚂蚁一般都是面试官用邮件发来的,要求在一个小时内完成。 其实时间很紧。 解决普通问题的步骤在15-20分钟左右考虑,然后在30-40分钟内写代码。 对于没有笔试经验的童鞋,最好带几个笔试练习。 否则,很容易紧张无知。

为什么先选择这个问题,目的是给童鞋们敲响警钟。 很多童鞋一般喜欢买刷题课,看别人的文章,很多课基本上讲了一遍代表性的LeetCode问题解法。 作为过来人,我可以负责任地告诉你。 如果以为光是这样就掌握了LeetCode的主题的话就大错特错了。 因为没有经过平时严格的自我训练,所以现场因紧张而翻船的可能性很高。

刚得到解决问题过程的复原问题的时候绝对不要慌张。 请先多读问题。 此问题意味着两个非空的单链表,每个节点只能包含一位数字。 请将两个数相加,返回到以相同形式表示和的链表。

虽然对于蚂蚁的很多问题,想法并不是LeetCode的原题,但这个问题其实和LeetCode的第二个问题加上两个数非常相似。 区别在于,LeetCode的第二个问题是链表已经转用了,所以最终没有必要转用。

所以你看到了吧。 如果大家平时都刷问题的话,主题一定要先自己试一下才能加深印象。 笔试的时候我不怕。 这个问题的想法如下

创建新的链表以转置两个链表; 同时遍历两个链表,逐位计算它们的和,并将其添加到当前位置的进位值中。 假设当前两个链表中相应位置的数字为n1、n2,进位值为carry,则它们的和为n1 n2 carry。 虽然在计算各位的同时需要考虑前一位的进位问题,但是在当前位计算结束后也需要更新进位值。 如果在遍历所有两个链表后进位值为1,则节点1将添加到新链表的前端。 倒排新的链表

此问题代码如下

publicclassbigsum { staticclasslistnode } privatelistnodenext; 私密int value; listnode(intvalue ) { this.value=value; }公共列表获取下一步() { return next; } publicvoidsetnext (listnode next ) { this.next=next; } public int getValue () { return value; }公共语音设置(intvalue ) { this.value=value; } publicstaticlistnodeaddtwolist (listnode first,ListNode second ) /合法if(null==first|||null==second ) retuuus ) listnodereversesend=reverse list (第二个; ListNode temFirst=reverseFirst; ListNode temSecond=reverseSend; 列表节点结果列表=new listnode (-1; ListNode p=resultList; int flag=0; 威尔(tem first!=null |!=null}{inttemp=flag; if(TemFirst!=null}{temp=temfirst.value; temFirst=temFirst.next; (if ) temsecond!=null}{temp=temsecond.value; temSecond=temSecond.next; (if )时间9 ) {时间-=10; flag=1; } else { flag=0; }列表节点=新列表节点(temp ); p.next=node; p=p.next; (if ) flag==1) listnodenode=newlistnode ) 1; p.next=node; } returnreverselist (result list.next; //链表publicstaticlistnodereverselist (listnodetargetlist ) { ListNode newhead=null; wile (目标列表!=null } { listnode temp=target list.next; targetList.next=newhead; 新头部=target list; 目标列表=temp; }返回新头; (/1-2-3(4-5=1-6-8) 12345=168 ) publicstaticvoidmain (字符串[ ] args ) listnodefirst=newlistnode(1) ) listnodethree=newlistnode(3; first.setnext(two; two.setnext(three ); listnodesecond=newlistnode(4; listnodefive=newlistnode(5; second.setnext(five; 列表节点结果=addtwolist (first,second; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。