#美团笔试#
昨晚也跟着水了一把,算是白嫖试题,手比较热,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

相关推荐

07-24 12:30
湘潭大学 营销
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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