首页 > 编程知识 正文

美团笔试算法,美团笔试测试题

时间:2023-05-04 23:06:11 阅读:195924 作者:2327

昨天携程惨败,今天美团惨败.....刷题太少根本不够应对笔试的,美团今年的笔试是5道编程,目测两道leetcode简单 ,两道中等,一道困难。本文纯属记录一下自己的菜鸡笔试历程,如果对某个题目有好的解法,请一定评论私信指教一下!感谢!

两道简单的感觉自己都做出来了,但是一个只能通过部分测试样例,一个超时了,剩下的题没有做.....感觉这两个企业笔试题都喜欢考动态规划,这快接下来得好好看看了,之前没怎么做过这种题。

关于第一题,图片太大,上传不上来,我就只写文字了。

给出一个序列包含n个正整数的序列A,你可以从中删除若干个数,使得剩下的数字中的最大值和最小值之差不超过x,请问最少删除多少个数字。输入第一行仅包含两个正整数n和x,表示给出的序列的长度和给定的正整数。(1<=n<=1000,1<=x<=10000)接下来一行有n个正整数,即这个序列,中间用空格隔开。(1<=a_i<=10000)输出仅包含一个正整数,表示最少删除的数字的数量。输入 5 2 2 1 3 2 5输出 1

这道题可能是我想错了,我首先将数组进行排序,然后用了两个指针left=0和right=length-1从数组的两端向里面移动,如果当前的arr[left+1]-arr[left]>arr[right]-arr[right-1]那么说明移动left比移动right更优,直到arr[right]-arr[left]<=x结束循环。

这样应该是错了,看到牛客有评论是暴力寻找,i从0到arr.length-1每个元素找到能满足arr[j]-arr[i]<=x的最大j值,O(n2)的时间复杂度,待会我进行code尝试一下。

上面这道题可以去了解一下尺取法。

https://www.nowcoder.com/discuss/180336?type=101

https://zhuanlan.zhihu.com/p/61564531

从上面这篇知乎得知,这个题应该和leetcode209是同种解法

第二题(图从大佬那里偷来的)

这道题我的想法是这样的,

输入数组为arr,烙印数steps=0,

先对输入的数组中所有的数进行求和得到sum,steps =(m/sum)*arr.length,m=m%sum

用LinkedList记录从1,2...arr.length-1个数,while(m>0)条件下使用迭代器遍历list,当m>=arr[i]时,m-=arr[i],steps++,当m<arr[i]时,表示当前拥有的法力值永远无法再在i位置留下烙印,将i在list中移除掉。关键代码如下

public static long StepCountFunc(int[] arr,long n){// int canLeavePower =0; long steps=0; long sum =0; for(int i=0;i<arr.length;i++){ sum+=arr[i]; } if(n>=sum){ steps=(n/sum)*arr.length; n=n%sum; } LinkedList<Integer> list =new LinkedList<>(); for(int k=0;k<arr.length;k++){ list.add(k); } Iterator<Integer> iterator; while (n>0){ iterator= list.iterator(); while (iterator.hasNext()){ int index = iterator.next(); if(n>=arr[index]){ n=n-arr[index]; steps++; }else { iterator.remove(); } } if(list.size()==0) return steps; } return steps; }

检查代码我好像知道为什么只能AC27%了,主函数里我是这么调用的.....21是测试样例的,我给写死了,妈个鸡哦....被自己蠢死。

long steps = StepCountFunc(nums,21);System.out.println(steps);

刚看了牛客某acm大佬的思路,原博如下

https://jkchen.blog.csdn.net/article/details/105279440

大佬的代码我完全没看懂,C比Java可读性差太多了/(ㄒoㄒ)/~~,关键是这句,不能整圈(sum>m)的情况,显然某个前缀的sum已经>m了,所以我们二分这个前缀(动态前缀和使用树状数组维护),将第一个大于m的前缀的那个位置删掉。

我大致理解思想了,可我写不出来.....

第三题是动态规划,再引用一下这位大佬的博客

https://blog.csdn.net/jk_chen_acmer/article/details/105279577

概率dp https://blog.csdn.net/wuxiaowu547/article/details/81835800

后面的再总结吧,现在的我也不会做....这两天笔试真的受打击了,得好好刷题才行了,加油吧。

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