携程Java开发笔试

大佬们教教3,4题的思路吧。

1.字符串正序倒序拼接。
2.二位数组随机01,每次操作一个1*2的小矩阵的数全置为1,求最小次数。
3.一个长度为n的数组res存放整数(有正负),要求选择一个全是偶数的连续子数组arr,将arr的和除以2,并与res中除了arr数组外其他所有值相加得到结果sum,要求这个sum最大。
4.给定一个数n,求1! * 2! * 3! * …… n! 所包含的因数个数。

第一,二题 AC

第三题暴力法,取出所有全是偶数的尽可能长的连续子数组Arrs,在每个Arr中遍历所有的子数组求它们的和,取最小的和记住它们的下标。最后在原数组中按要求求和。超时了,A了45%。

第四题不会,碰到数学题就寄...
#携程##携程笔试#
全部评论
第三题对array操作时不要暴力,而是用求最大连续子串和的思想求出array中连续的最小的负值,再把数据类型改为long,就可以了
1
送花
回复 分享
发布于 03-29 14:37 江西
三题用动态规划就行,dp[i]=min(dp[i-1],0)+nums[i],四题不会😭
点赞
送花
回复 分享
发布于 03-28 22:36 四川
国泰君安
校招火热招聘中
官网直投
第三题,动态规划,计算最小连续子序列和,然后用数组总和减去最小子序列和的一半就算出来了
点赞
送花
回复 分享
发布于 03-28 23:00 云南

相关推荐

感觉前两题比较简单,后两题难度比较大,做完之后是100,100,20,0,也不知道能不能进面试第一题很简单,给一个长宽,给两个符号,让输出一个矩阵,要求符号交替出现,每个符号周围(上下左右)不能是和当前符号相同的,比较简单,相信各位大佬也都能A,就不细说了。第二题也不难,给一个正整数(非常长,可能有5000位),给一个k,给一个p,要求找到这个正整数中长度为k的一段数字的最大值,输出这个最大值%p的结果,也不很难。第三题看起来很简单,但是实际有难度。给一个数组,长度为n,再给q组数据,每组数据两个数l,r,代表左右边界,要求输出数组第l位一直乘到第r位的乘积%6。1相信各位牛友都能写出来,主要问题在于时间复杂度。如果使用最直接的方法算,n,q都到10^5时显然会超时,这也是一直卡在20%的原因。显然他是想让我们利用一些计算过的值,不要有太多重复计算,这可以大大减少时间复杂度,例如我们算过了10-20,在算10-21时直接用10-20的结果乘21就好了。最开始试图直接打表,写完发现内存爆了,此路不通。苦思冥想怎么能够实现重复利用,想到一种思路,我们可以分块,比如1-100000分成100块:1-1000、1000-2000、……、99000-100000,预先计算出每一段的结果,存起来,然后算q组数据的时候就可以利用了,比如0-2001,就可以利用1-1000、1000-2000这两段从而降低时间复杂度。但是想了太久了,最后也没写完,也不知道可不可行,哎,还是题写的太少了,菜还是得练,刷题去了这是鼠鼠做的第一个比较大的厂的笔试,本来还想着要不要推到下一批,想想算了,直接冲吧。也不知道能不能过欢迎牛友们一起交流,本人四月底才开始申请暑期实习,希望能和各位大佬们多交流,早日收到满意offer!
查看3道真题和解析 投递携程等公司7个岗位
点赞 评论 收藏
分享
1 7 评论
分享
牛客网
牛客企业服务