9.19 小米笔试


单选25,多选1,编程2

● 选择题有几题是图相关的,忘差不多了


● 编程第一题刚开始用的贪心过了18%,转战第二题用贪心a了100%。后面又用贪心试了试第一题还是18%,最后5分钟用回溯,可能一些细节没处理好,没过。



● 第一道用玩具填充箱子,一个玩具数组表示每个玩具大小,箱子大小N,还有一些边角料大小c,问是否能用这些东西将箱子恰好填满
思路:总和和N相等或者原来是小于加上边角料后大于是返回true,下面就是遍历数组,从startIndex开始遍历,放入元素,递归处理完后移出元素


● 第二道用两个数组,交换对方相同下标的数,是否能使其中一个数组为有序的(非严格递增或非严格递减)
思路:非严格递增,如果可以的话每次选小的那个数,否则选大的,如果大的也不能让其递增,那么就无法实现。非严格递减同理#我的实习求职记录##实习,投递多份简历没人回复怎么办##互联网没坑了,还能去哪里?##你都收到了哪些公司的感谢信?##如何判断面试是否凉了#
全部评论
我用python只写完读入的代码执行起来都是runtime error 真有毒
1 回复 分享
发布于 09-19 18:04 浙江
第一题:static LinkedList<integer> path = new LinkedList<>(); static int sum = 0; public static boolean method(int N, int c, int[] array, int startIndex) { if (sum==N || (sum<n>=N)) { return true; } for (int i = startIndex; i < array.length; i++) { path.add(array[i]); sum += array[i]; boolean res = method(N, c, array, i + 1); if (res){ return res; } path.removeLast(); sum -= array[i]; } return false; }</n></integer>
点赞 回复 分享
发布于 09-19 18:01 浙江
第二题:public static boolean method(int[] A, int[] B) { int num1 = Math.min(A[0], B[0]); int num2 = Math.max(A[0], B[0]); boolean flag1 = true; boolean flag2 = true; for (int i = 1; i < A.length; i++) { int min = Math.min(A[i], B[i]); int max = Math.max(A[i], B[i]); if (!flag1 && !flag2) { return false; } if (flag1) { // 选小的看看能不能满足,不能就选大的 if (min >= num1) { num1 = min; } else if (max >= num1) { num1 = max; } else { flag1 = false; } } if (flag2) { if (max <= num2) { num2 = max; } else if (min <= num2) { num2 = min; } else { flag2 = false; } } } return flag1 || flag2; }
点赞 回复 分享
发布于 09-19 18:01 浙江
第一题同18%,写的dfs,后面没时间了
点赞 回复 分享
发布于 09-19 18:06 北京
第一题dp,100%。
点赞 回复 分享
发布于 09-19 18:10 河北
一题100,二题18还有戏嘛😭
点赞 回复 分享
发布于 09-19 21:40 广东

相关推荐

评论
2
3
分享
牛客网
牛客企业服务