美团笔试
第一题
给定一个数组,判断数组是否符合升序,以及数组元素两两相减后得到新的数组是否降序
思路:打卡题,正常判断即可
第二题
给定两个整数i,j,i表示字符串输入的个数,j表示字符串中字符的个数,问在j个字符串中能否拼凑出“meituan字符,如果能则输出YES,不能则输出NO
思路:哈希解法,将所有字符串拼成一个完整的字符串,再将字符串转为字符数组存储在map集合中,最后进行判断即可
另一种思路:牛客上面有人提供了dp的思路
第三题
小美拿到了一个数组。她每次可以进行如下操作之一:
- 选择一个元素,使其乘以 2。
- 选择一个元素,使其除以 2,向下取整
小美希望第一个元素变成所有元素的最大值。请你判断小美最少需要操作多少次?
思路:暴力解法即可,类型用long
第四题
小美有一个数组,她希望删除k个元素,使得剩余的元素两两之间互为倍数关系。你能告诉小美有多少种删除方案吗?
由于答案过大,请对10^9+7模
思路:没有思路
当时做题时的想法:当我想到删除的k个元素是动态变化的,我就知道是暴力解法是暴力不出所有解决方案的,而且时间也肯定会超时,我就意识到这道题目是要用dp来解了,可是我算法还没刷到dp啊,呜呜
第五题
原题:小美有很多的彩虹糖,每颗彩虹糖都有一个颜色,她每天可以吃两颗彩虹糖,如果今天吃的彩虹糖组合是之前没吃过的组合,则小美今天会很高兴。
例如,小美有 6 颗彩虹糖,颜色分别是 ![[1,1,4,5,1,4]]。
小红第一天吃一组颜色为 1 和 4 的彩虹糖,小美会很高兴;
第二天吃一组颜色为 4 和 1 的彩虹糖,小美不会很高兴;
第三天小美吃一组颜色为 1 和 5 的彩虹糖,小美会很高兴,此时小美共有 2 天很高兴。
小美想知道,她最多有几天会很高兴
题目翻译版本:给定一个数组,每次可以取两个元素,问最多有多少种不同的组合;已经组合过的元素不能再重复使用
思路:没时间+没思路,感觉有点像背包问题,背包怎样装货物重量最多,应该可以贪心算法来解的
笔试注意事项
1.提前调好闹钟,不要错过笔试时间;最好提前调一个小时的闹钟;(曾因为忘记时间错过美团笔试以及今天小米笔试晚进了半个小时,导致算法题时间紧张)
2.一定要看编程题注意事项,能否用本地编译环境,能否线上调试,输入输出的案例(如果没看的话,可能连输入输出都要捣鼓很长时间),类的命名和方法的命名
3.记得写导包语句呀,不要像我那么蠢一个一个导包呀,直接导java.utils.*就行了;而且有些公司的笔试是不会提示包路径的,这种时候就要自己平时记住常用类的包路径了
每家公司的笔试都一定的差异,记得提前查看笔试注意事项,能避免很多细节的坑(留下了不学无术的眼泪)
遗憾
今晚小米笔试的算法题感觉格外简单,而我却因为忘记笔试时间导致时间不足,过度紧张,最终完美错过这个机会,心里还是有点愤愤不平的,但忘记时间也是我自己综合实力的一种,得承认自己的不足
