5424. 数组中两元素的最大乘积
class Solution {
public int maxProduct(int[] nums) {
Arrays.sort(nums);
int res = Integer.MIN_VALUE;
for(int i=0;i<nums.length-1;i++) {
int curProduct = (nums[i]-1)*(nums[i+1]-1);
res=res>curProduct?res:curProduct;
}
return res;
}
}
5425. 切割后面积最大的蛋糕
这里有个注意的点,maxH*maxW这两个Int的值的乘积会超过Int的范围,所以要先转换为double
class Solution {
public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {
int hcut = horizontalCuts.length;
int wcut= verticalCuts.length;
Arrays.sort(horizontalCuts);
Arrays.sort(verticalCuts);
int maxH = horizontalCuts[0];
int maxW = verticalCuts[0];
for(int i=1;i<hcut;i++) {
int range = horizontalCuts[i]-horizontalCuts[i-1];
maxH=maxH>range?maxH:range;
}
maxH=maxH>(h-horizontalCuts[hcut-1])?maxH:(h-horizontalCuts[hcut-1]);
for(int i=1;i<wcut;i++) {
int range = verticalCuts[i]-verticalCuts[i-1];
maxW=maxW>range?maxW:range;
}
maxW=maxW>(w-verticalCuts[wcut-1])?maxW:(w-verticalCuts[wcut-1]);
//double res= maxH*maxW;
double res= Double.valueOf(maxH)*Double.valueOf(maxW);
double yushu = 1000000007;
int max = (int) (res%yushu);
return max;
}
}
5426. 重新规划路线
这道题我的想法是先将0(即最后的目的地)加入到set队列,然后第一轮将所有与0连接的city加入set,然后每轮将与set里的city相连的city加入set。
时间比较紧,代码可能写的复杂了。
class Solution {
public int minReorder(int n, int[][] connections) {
int len = connections.length;
List<List<Integer>> lists = new ArrayList<>();
for(int i=0;i<len;i++) {
List<Integer> tempArr = new ArrayList<>();
tempArr.add(connections[i][0]);
tempArr.add(connections[i][1]);
lists.add(tempArr);
}
Set<Integer> set = new HashSet<>();
set.add(0);
int res = 0;
while(!lists.isEmpty()) {
Set<Integer> currAddSet = new HashSet<>();
int i=0;
while(i<lists.size()) {
//System.out.println("i="+i);
//System.out.println("当前的lists长度:"+lists.size());
//System.out.println(lists.get(i).get(0)+" and "+lists.get(i).get(1));
if(set.contains(lists.get(i).get(0))) {
//需要转换位置
//System.out.println("需要转换位置");
res++;
currAddSet.add(lists.get(i).get(1));
lists.remove(i);
}else if(set.contains(lists.get(i).get(1))){
//System.out.println("不需要转换位置");
currAddSet.add(lists.get(i).get(0));
lists.remove(i);
}else {
//System.out.println("不包含");
i++;
}
}
for(int k:currAddSet) {
set.add(k);
}
}
return res;
}
}
今天在最后一分钟将第三题提交了,好险啊。
这次是我的最好成绩了,在1000名左右,加油,加油。