Java算法--美团真题
第一道题
有一块10000 * 10000 * 10000的立方体豆腐
豆腐的前左下角放在(0,0,0)点,豆腐的后右上角放在(10000,10000,10000)点
下面给出切法的数据结构
[a,b]
a=1,表示x= b处,-把无穷大的刀平行于yz面贯穿豆腐切过去
a=2,表示y= b处,-把无穷大的刀平行于xz面贯穿豆腐切过去
a=3,表示z= b处,一把无穷大的刀平行于x面贯穿豆腐切过去
a=1or2or3,0<=b<=10000
给定一个n*2的二维数组,表示切了n刀, n <= 10的5次方
返回豆腐中最大的一块体积是多少?
public static long maxCut(int[][] cuts) { if(cuts == null || cuts.length == 0) { return 10000L * 10000L * 10000L; } Arrays.sort(cuts, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if(o1[0] != o2[0]) { return o1[0] - o2[0]; } return o1[1] - o2[1]; } }); int length = cuts.length; int i = 0; int pre = 0; int maxX = 0; while(i < length && cuts[i][0] == 1) { maxX = Math.max(maxX, cuts[i][0] - pre); pre
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
八股文+场景题+算法真题 文章被收录于专栏
Java全新整理八股文+场景题