#美团笔试#
昨晚也跟着水了一把,算是白嫖试题,手比较热,5道全部AC(100%)
简单说一下
第一题straightforward,注意格式;比赛那个题单调栈;改bug那个二分搜索;四面体那个dp;最后一个题straightforward
代码放在下面回复,欢迎多多交流~
全部评论
&虽然我是非技术 但感觉好厉害哦
点赞 回复 分享
发布于 2020-04-23 18:22
第五题: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Problem5 { private static int matchTimes(String son, String mother) { int res = 0; int index = 0; while (index < mother.length()) { int t = mother.indexOf(son, index); if (t >= 0) { res ++; index = t + 1; } else { break; } } return res; } private static void solution(List<String> strs, String[] opers) { boolean[] valid = new boolean[strs.size()]; for (String oper: opers) { if (oper.startsWith("+")) { valid[Integer.parseInt(oper.substring(1)) - 1] = false; } else if (oper.startsWith("-")) { valid[Integer.parseInt(oper.substring(1)) - 1] = true; } else { int count = 0; String mother = oper.substring(1); for (int i = 0; i < strs.size(); ++ i) { if (valid[i]) { continue; } count += matchTimes(strs.get(i), mother); } System.out.println(count); } } } public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line = reader.readLine(); int n = Integer.parseInt(line.trim().split(" ")[0]), k = Integer.parseInt(line.trim().split(" ")[1]); List<String> strs = new ArrayList<>(k); String[] opers = new String[n]; for (int i = 0; i < k; ++ i) { strs.add(reader.readLine().trim()); } for (int i = 0; i < n; ++ i) { opers[i] = reader.readLine().trim(); } solution(strs, opers); } }
点赞 回复 分享
发布于 2020-04-10 17:36
第四题: import java.util.Scanner; public class Problem4 { private static void solution(int k) { long[][] recorder = new long[4][k + 1]; recorder[0][0] = 1; long mod = 1000000007; for (int i = 1; i < k + 1; ++ i) { for (int j = 0; j < 4; ++ j) { for (int m = 0; m < 4; ++ m) { if (m == j) { continue; } recorder[j][i] += recorder[m][i - 1] % mod; recorder[j][i] %= mod; } recorder[j][i] %= mod; } } System.out.println(recorder[0][k] % mod); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int k = scanner.nextInt(); solution(k); } }
点赞 回复 分享
发布于 2020-04-10 17:36
第三题: import java.util.Scanner; public class Problem3 { private static long pow(long number, long index) { if (index == 0) { return 1; } if (index == 1) { return number; } long mid = index / 2; long r1 = pow(number, mid); return r1 * r1 * pow(number, index - 2 * mid); } private static long getDay(long x, long k) { int day = 0; int base = 1; while (base <= x) { day ++; base *= k; } return day; } private static boolean single(long n, long k, long x) { long days = getDay(x, k); long res = 0; long base = 1; for (long i = 0; i < days; ++ i) { res += (x / base); base *= k; } return res >= n; } private static void solution(long n, long k) { if (n == 1) { System.out.println(1); return; } long left = 2, right = n; if (single(n, k, left)) { System.out.println(2); return; } while (left < right) { //System.out.println(left + " --- " + right + " " + single(n, k, 8)); if (left + 1 == right) { if (single(n, k, left)) { System.out.println(left); } else { System.out.println(right); } return; } long mid = (left + right) / 2; if (single(n, k, mid)) { right = mid; } else { left = mid; } } System.out.println(left); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(), k = scanner.nextInt(); solution(n, k); //System.out.println(single(10, 3, 8)); } }
点赞 回复 分享
发布于 2020-04-10 17:36
第二题: import java.util.Scanner; import java.util.Stack; public class Problem2 { private static void solution(int[] players, int[] res) { int[] projection = new int[players.length + 1]; for (int i = 0; i < players.length; ++ i) { projection[players[i]] = i; } int[] resProjection = new int[players.length]; for (int i = 0; i < res.length; ++ i) { resProjection[i] = projection[res[i]]; } Stack<Integer> stack = new Stack<>(); int count = 0; for (int i = 0; i < res.length; ++ i) { while (! stack.empty() && resProjection[stack.peek()] > resProjection[i]) { stack.pop(); count ++; } stack.push(i); } System.out.println(count); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int length = scanner.nextInt(); int[] players = new int[length]; int[] res = new int[length]; for (int i = 0; i < length; ++ i) { players[i] = scanner.nextInt(); } for (int i = 0; i < length; ++ i) { res[i] = scanner.nextInt(); } solution(players, res); } }
点赞 回复 分享
发布于 2020-04-10 17:35
第一题: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Problem1 { private static void solution(long week, long hour, long minute, long delta) { long day = delta / (60 * 24); long rest = delta % (60 * 24); long minuteNow = hour * 60 + minute; if (rest > minuteNow) { day ++; minuteNow += 24 * 60; } week -= (day % 7); if (week <= 0) { week += 7; } minuteNow -= rest; System.out.println(week); long newMin = minuteNow / 60; String minOut = "" + newMin, secondOut = "" + (minuteNow % 60); if (newMin < 10) { minOut = ("0" + newMin); } if ((minuteNow % 60) < 10) { secondOut = ("0" + (minuteNow % 60)); } System.out.println(minOut + ":" + secondOut); } public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] lines = new String[3]; for (int i = 0; i < 3; ++ i) { lines[i] = reader.readLine(); } int week = Integer.parseInt(lines[0].trim()); String time = lines[1].trim(); String[] strs = time.split(":"); long hour = Long.parseLong(strs[0].trim()); long minute = Long.parseLong(strs[1].trim()); long delta = Long.parseLong(lines[2]); solution(week, hour, minute, delta); } }
点赞 回复 分享
发布于 2020-04-10 17:35

相关推荐

09-29 12:24
门头沟学院 Java
点赞 评论 收藏
分享
09-13 08:41
服装/纺织设计
点赞 评论 收藏
分享
机智的大学生这就开摆:有些地方描述有点儿空泛。传感器直接说清是哪款,要不然对方都不知道问啥。然后freertos那里的描述也是,加上freertos就实现了实时性吗?可以说基于freertos的调度,结合xxx优化/xxx技术实现了xxx检测的实时性。同时freertos也能实现异步io,也能实现灵活的并行架构和高并发。 检测时效性的问题要考虑哪里需要时效性,摔倒检测需要通过中断实现,至于温度这种大惯量就不需要,方案细节理清楚。然后freertos那里提升响应速度用的消息队列不是太合适,可以说是用的notify反正和消息队列差不多,或者说指针传参来优化消息队列的值传递进而提升线程间通信效率。 但凡是搞过开发的看一眼你的简历就知道有问题了,需要重新整理技术路线优化一下。首先搞清楚技术路线,描述好软硬框架,体现性能优化/低功耗等。例如后续针对xxx功能进行了xxx的优化,实现了xxx成果(这里可以展开描述你使用的工具链,你是用的串口调试助手还是RTT来打印日志,有没有用systemview来优化任务的优先级大小避免乱序调度,或者使用了Ozone调试定位问题等)。 描述问题上例如视觉项目那里,基于xxx通信接口编写xxx传感器的驱动,实现了xxx功能,并提供了xxx数据处理/稳定性/精确度/异步调用。或者也可以统一描述为基于xxx、xxx、xxx通讯协议编写xxx、xxx、xxx传感器的驱动。后续再单独给这些传感器的数据处理/优化等进行描述。 最重要的一点,实习栏太少了,五六个月不至于只干了这么点,把实习项目描述清楚,把自己会的不管有没有让你做都写进去。你写了实习这栏,内容就不能比剩下的两个项目差多少了。 最后就是看看岗位jd,跟着描述修改你的专业技能以及项目的描述,这样被回复的概率才大。 希望你早日找到理想工作!祝好
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务