失效链接处理 |
美团Java笔试面试题 PDF 下载
本站整理下载:
相关截图:
主要内容:
小团的蛋糕铺长期霸占着美团 APP 中“蛋糕奶茶”栏目的首位,因此总会吸引各路食客前来探
店。
小团一天最多可以烤 n 个蛋糕,每个蛋糕有一个正整数的重量。
早上,糕点铺已经做好了 m 个蛋糕。
现在,有一个顾客要来买两个蛋糕,他希望买这一天糕点铺烤好的最重的和最轻的蛋糕,并
且希望这两个蛋糕的重量恰好为 a 和 b。剩余的 n-m 个蛋糕可以现烤,请问小团能否满足他
的要求?
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)
);
String line;
String[] params;
while((line = br.readLine()) != null) {
params = line.trim().split(" ");
int n = Integer.parseInt(params[0]);
int m = Integer.parseInt(params[1]);
int a = Integer.parseInt(params[2]);
int b = Integer.parseInt(params[3]);
params = br.readLine().trim().split(" ");
int[] weight = new int[m];
HashSet<Integer> set = new HashSet<>(); // 保存现有蛋糕的重量
for(int i = 0; i < m; i++) {
weight[i] = Integer.parseInt(params[i]);
set.add(weight[i]);
}
Arrays.sort(weight);
// 保证 a<b
if(a > b){
int temp = a;
a = b;
b = temp;
}
if(weight[0] < a || weight[m - 1] > b){
// 现有蛋糕中,重量最小的小于 a,最大的大于 b,肯定完成不了需求
System.out.println("NO");
}else{
if(set.contains(a) && set.contains(b)) // 如果现有蛋糕中已经包
含了 a 和 b,就没问题
System.out.println("YES");
else{
if(set.contains(a) || set.contains(b)){
// 如果只包含 a 或 b,检查一下 n-m 是否大于等于 1,即还有一个重
量需要现烤
System.out.println(n - m >= 1 && weight[m - 1] <= b? "Y
ES": "NO");
}else{
// 否则需要检查 n-m 是否大于等于 2,即两个重量都需要现烤
System.out.println(n - m >= 2? "YES": "NO");
}
}
}
}
}
}
|