https://www.nowcoder.com/questionTerminal/9c4a4e879b4f49939dfaebea8948f976
代码
package 淘汰分数;
import java.util.Arrays;
import java.util.Scanner;
/*
6 2 3
1 2 3 3 3 3
*/
/*
* 先排序,从最小值开始遍历,判断两者人数是否符合人数区间
* 注意:考虑存在多个分数线时,要输出最低的,所以要排序
* */
public class EliminateScores {
public static int findEliminateScores(int min, int max, int[] scores) {
if (min > max) return -1;
int rs;//结果分数线
//分数得先排序
Arrays.sort(scores);
for (int i = 0; i < scores.length; i++) {
int temp = scores[i];
int higherNum = 0;//分高
int lowerNum = 0;//分低
//统计晋级淘汰人数
for (int j = 0; j < scores.length; j++) {
if (temp < scores[j])
higherNum++;
else lowerNum++;
if (higherNum > max || lowerNum > max) break;
}
if (higherNum <= max && higherNum >= min && lowerNum <= max && lowerNum >= min) {
rs = temp;
return rs;
}
}
return -1;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int playerNum = s.nextInt();//参赛
int min = s.nextInt();//晋级淘汰下限
int max = s.nextInt();//晋级淘汰上限
int[] scores = new int[playerNum];
for (int i = 0; i < playerNum; i++) {
scores[i] = s.nextInt();
}
int rs = findEliminateScores(min, max, scores);
System.out.println(rs);
}
}
原文:https://www.cnblogs.com/musecho/p/14518640.html