因为被美团的大佬翻牌子了,所以内推直接免笔试进面试,恰巧今天遇到同学们答美团的笔试题,热爱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校园招聘内推笔试代码分享相关推荐

  1. 整数无序数组求第K大数(暴力|快排) - 滴滴出行2018校园招聘内推笔试-研发工程师

    时间限制:1S 空间限制:32768K 题目描述: 给定无序整数序列,求第K大的数,例如{45,67,33,21},第2大的数为45 输入描述: 输入第一行为整数序列,数字用空格分割,如:45 67 ...

  2. 2017年网易有道校园招聘内推笔试

    2016年8月17日晚19:00-21:00 2017年网易有道校园招聘内推笔试题,编程题解析 第一题: 洗牌 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依 ...

  3. 海康威视2019年校园招聘内推码(2019届春招、2020届实习/秋招)

    官宣拥有内推码的同学,同等条件择优录取,在每一个环节都会更加具有优势 海康威视2019年校园招聘内推码(2019届春招.2020届实习/秋招): 5S3QAI (最好复制内推码,不要写错了,写错了可能 ...

  4. Synopsys新思科技2023“向新力”秋季校园招聘内推

    Synopsys新思科技2023校园招聘开始啦!另外也接收社招内推 内推可发送简历至邮箱zhengs@synopsys.com,注明岗位+地点. 内推免去筛选,简历直达hiring manager! ...

  5. 荣耀2023届校园招聘内推码

    荣耀内推码: bzctoa 提供岗位: 研发.营销.服务.供应链.产品与设计.财经.法务.公共关系.人力资源 面向人群: 2023届应届毕业生 工作地点: 深圳.北京.西安.南京 求职技巧: 简历一定 ...

  6. 阿里巴巴校园招聘内推C++研发岗位电话面试

    不得不说时间过的太快了,马上就到了要找工作的时候了,最近也一直在看面技术岗位的书(哎,状态还不太好,好好调整一下,相信自己!) ,同时也投了几个互联网公司的内推岗位,可惜还没有回复. 这两天收到阿里巴 ...

  7. 【笔试题】网易2018秋招内推笔试

    彩色的砖块 #include <iostream> #include <string> #include <unordered_map> using namespa ...

  8. 2018迅雷校园招聘客户端在线笔试B卷---输入一个有符号整数,输出该整数的反转值。

    2018迅雷校园招聘客户端在线笔试B卷-输入一个有符号整数,输出该整数的反转值. 题目描述: 输入一个有符号整数,输出该整数的反转值. 代码如下: num = list(input()) if num ...

  9. 2018滴滴校招(秋招)内推笔试编程题题解

    package 内推笔试;import java.util.Arrays; import java.util.Scanner;/*** Created by liuming on 2017/8/26. ...

  10. 数据分析真题日刷 | 网易2018校园招聘数据分析工程师笔试卷

    七月第一天,希望大家下半年都能「翻身」! 今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选20道:主观题:问答3道 完成时间 120分钟 牛客网评估难度系数 四颗 ...

最新文章

  1. 漫画:崩溃了!!这程序是什么玩意儿!!!
  2. iOS 毛玻璃效果的实现方法
  3. POST方式发起下载请求
  4. js时间选择器_Vuestic Admin一款免费与美妙基于Vue.js开发的管理模板
  5. “Table .__efmigrationshistory doesn’t exist”的解决方案
  6. C++之异常处理探究
  7. vscode插件之Vetur
  8. python中 n是换几行_如何在Python中用`\ n`替换通用换行符?
  9. 大数据时代的回收生意经(淼一专访)
  10. 低智商社会,娱乐至死,2书推荐,世界12大理论,
  11. 计算机毕设应用型开题报告,毕设开题报告范文.doc
  12. 【转帖】八类网线与六类网线有什么区别呢?
  13. 大都会人寿线下培训第九天-通关了
  14. 淘宝-没素质的商家给消费者加入禁购名单
  15. 亚马逊运营怎么做广告?六大方法!
  16. 你真的会用C语言的fscanf_s吗
  17. BIM应用(VR\AR\MR)相关设备及软件——来自《中国建筑业BIM应用分析报告(2020)》
  18. ORA-01422: exact fetch returns more than requested number of rows
  19. webshell后门检测原理
  20. Web 2.0时代RSS的.Net实现

热门文章

  1. 航天飞机电子计算机象征是什么,航天飞机的特点是什么
  2. 神调侃!程序员专属成长书单,我比女朋友更了解你!
  3. quartz 数据库表含义解释
  4. 并发框架——Distruptor
  5. pycharm导入.pyt后缀文件
  6. 有3种水果(苹果、香蕉、橘子),每位同学只能选1种最爱吃的(共5位同学),要求编一个统计水果票数的程序,先输入水果种类,最后输出各水果得票结果。
  7. 有赞搜索系统的架构演进
  8. 解决Linux系统不能上网问题
  9. 一个查看贝塞尔曲线效果的网站
  10. 从价值出发,技术管理痛点的正解