最近我有个朋友在准备面试,然后她的笔试题我看了很多,感觉这个题挺有意思的,想发一下
均富卡
给定 n 个数(例如 [4, 3, 1, 7,
1]),每次操作是选择其中若
⼲
个数,将它们替换为它们的平均
数。
例如:选择第 1,2,3,5 四个数,对应的数是 4,3,1,1,它们的平均数为 2.25,所以操
作后这 5 个数就变为了 [2.25,2.25,2.25,7,2.25]。
假定玩家可以进
⾏
任意次操作(也可以为 0 次),若给定
⼀
个 w,问最多可以有多少个数能
不
⼩
于 w。
样例数据:
[11, 9, 11, 9],w = 10,输出 4
[5, 1, 2, 1],w = 3,输出 2
[4, 3],w = 5,输出 0
代码如下
public class Demo01 {
public static void main(String[] args) {
int arr[] = {1,2};
System.out.println("请输入一个数");
Scanner sc = new Scanner(System.in);
int w = sc.nextInt();
//冒泡排序,将最大的数放在前面
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
int num = 0;
if (arr[j] < arr[j + 1]) {
num = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = num;
}
}
}
System.out.println(Arrays.toString(arr));
int j=0;
int temp = 0;
for (int i = 0; i < arr.length ; i++) {
temp += arr[i];
if (temp / (i + 1) < w) {
System.out.println("最多可以有" + i + "个数能不小于" + w);
j=j+1;
break;
}
}
if(j==0){
int a=arr.length;
System.out.println("最多可以有"+a+"个数能不小于"+w);
}
}
}
这道题看似挺简单的,但是我感觉逻辑性挺强的,需要相对长一点的时间去思考,还挺有意思的