美团2018校园招聘内推笔试代码分享
因为被美团的大佬翻牌子了,所以内推直接免笔试进面试,恰巧今天遇到同学们答美团的笔试题,热爱OJ的我就参与了一发,战果还不错,2道题都轻松AC了。
接下来就和大家分享一下我的做题思路和代码,我觉得第一题还有改进的地方,希望大家不吝赐教,我也今晚好好想想有没有更优秀的解法。
首先是第一题:
序列中任意个连续的元素组成的子序列称为该序列的子串。
现在给你一个序列P和一个整数K,询问元素和是K的倍数的子串的最大长度。
样例输入:
[1,2,3,4,5],整数K,满足条件的子串是{5},{2,3},{1,2,3,4},{1,2,3,4,5}。
那么答案就是5。如果这样的子串不存在,就输出0.
这道题和今年蓝桥杯上面的一道题很想(虽然我也没参加,只是自己随便做了做它的题)。适用动态规划,维护一个dp矩阵,每个元素是前面元素和%K的结果,注意,我们计算下一个元素时,只需要根据递推公式: dp[i] = (dp[i-1]+arr[i])%K;即可。比如[1,2,3,4,5]就会得到[1,3,1,0,0]。
这时候我们再根据这个dp矩阵来计算最大长度,dp矩阵中元素一定是0,1,...K-1.
先看0.为0就代表前面的元素和正好是K的倍数,那么我们寻找数组中最后一个0的位置,就是dp[i]=0的最长子串长度-1.
然后看1,我们找dp矩阵中第一1的位置j和最后一个1之间的位置k的差,这个差值就是dp[i]=1的最长子串长度。相当于前k项和-前j项和正好是K的倍数。
...
依次类推到K-1,每次都维护最长距离max。最终输出。
同时加入arr.length==0的判断。
package com.nowcoder.java;public class Meituan01 {public static void main(String[] args) {int[] arr={1,2,3};int K = 5;System.out.println(cal(arr,K));}public static int cal(int[] arr,int K){if(arr.length==0)return 0;int max=0;int[] dp = new int[arr.length];dp[0] = arr[0]%K;for(int i=1;i<dp.length;i++){dp[i]=(dp[i-1]+arr[i])%K;}for(int i=0;i<dp.length;i++){if(dp[i]==0)max=i+1;}for(int i=1;i<K;i++){int pre = 0;int back = dp.length-1;while(dp[pre]!=i && pre<back)pre++;while(dp[back]!=i && back>pre)back--;int len=back-pre;if(len>max)max=len;}return max;}
}
第二题:
太长了我直接贴图。
这道题乍看很难,其实道理只有一个!
那就是:最大的那一个组的人数一定要比其余组的和大于等于即可!
package com.nowcoder.java;import java.util.Arrays;public class Meituan02 {public static void main(String[] args) {int N=2;int[] arr = new int[]{10,10,20};System.out.println(check(arr,N));}public static boolean check(int[] arr,int N){if(N<=1)return false;Arrays.sort(arr);int sum = 0;for(int i=0;i<N-1;i++){sum+=arr[i];}if(sum>=arr[N-1])return true;else{return false;}}
}
代码如上,
以上
美团2018校园招聘内推笔试代码分享相关推荐
- 整数无序数组求第K大数(暴力|快排) - 滴滴出行2018校园招聘内推笔试-研发工程师
时间限制:1S 空间限制:32768K 题目描述: 给定无序整数序列,求第K大的数,例如{45,67,33,21},第2大的数为45 输入描述: 输入第一行为整数序列,数字用空格分割,如:45 67 ...
- 2017年网易有道校园招聘内推笔试
2016年8月17日晚19:00-21:00 2017年网易有道校园招聘内推笔试题,编程题解析 第一题: 洗牌 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依 ...
- 海康威视2019年校园招聘内推码(2019届春招、2020届实习/秋招)
官宣拥有内推码的同学,同等条件择优录取,在每一个环节都会更加具有优势 海康威视2019年校园招聘内推码(2019届春招.2020届实习/秋招): 5S3QAI (最好复制内推码,不要写错了,写错了可能 ...
- Synopsys新思科技2023“向新力”秋季校园招聘内推
Synopsys新思科技2023校园招聘开始啦!另外也接收社招内推 内推可发送简历至邮箱zhengs@synopsys.com,注明岗位+地点. 内推免去筛选,简历直达hiring manager! ...
- 荣耀2023届校园招聘内推码
荣耀内推码: bzctoa 提供岗位: 研发.营销.服务.供应链.产品与设计.财经.法务.公共关系.人力资源 面向人群: 2023届应届毕业生 工作地点: 深圳.北京.西安.南京 求职技巧: 简历一定 ...
- 阿里巴巴校园招聘内推C++研发岗位电话面试
不得不说时间过的太快了,马上就到了要找工作的时候了,最近也一直在看面技术岗位的书(哎,状态还不太好,好好调整一下,相信自己!) ,同时也投了几个互联网公司的内推岗位,可惜还没有回复. 这两天收到阿里巴 ...
- 【笔试题】网易2018秋招内推笔试
彩色的砖块 #include <iostream> #include <string> #include <unordered_map> using namespa ...
- 2018迅雷校园招聘客户端在线笔试B卷---输入一个有符号整数,输出该整数的反转值。
2018迅雷校园招聘客户端在线笔试B卷-输入一个有符号整数,输出该整数的反转值. 题目描述: 输入一个有符号整数,输出该整数的反转值. 代码如下: num = list(input()) if num ...
- 2018滴滴校招(秋招)内推笔试编程题题解
package 内推笔试;import java.util.Arrays; import java.util.Scanner;/*** Created by liuming on 2017/8/26. ...
- 数据分析真题日刷 | 网易2018校园招聘数据分析工程师笔试卷
七月第一天,希望大家下半年都能「翻身」! 今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选20道:主观题:问答3道 完成时间 120分钟 牛客网评估难度系数 四颗 ...
最新文章
- 漫画:崩溃了!!这程序是什么玩意儿!!!
- iOS 毛玻璃效果的实现方法
- POST方式发起下载请求
- js时间选择器_Vuestic Admin一款免费与美妙基于Vue.js开发的管理模板
- “Table .__efmigrationshistory doesn’t exist”的解决方案
- C++之异常处理探究
- vscode插件之Vetur
- python中 n是换几行_如何在Python中用`\ n`替换通用换行符?
- 大数据时代的回收生意经(淼一专访)
- 低智商社会,娱乐至死,2书推荐,世界12大理论,
- 计算机毕设应用型开题报告,毕设开题报告范文.doc
- 【转帖】八类网线与六类网线有什么区别呢?
- 大都会人寿线下培训第九天-通关了
- 淘宝-没素质的商家给消费者加入禁购名单
- 亚马逊运营怎么做广告?六大方法!
- 你真的会用C语言的fscanf_s吗
- BIM应用(VR\AR\MR)相关设备及软件——来自《中国建筑业BIM应用分析报告(2020)》
- ORA-01422: exact fetch returns more than requested number of rows
- webshell后门检测原理
- Web 2.0时代RSS的.Net实现