1.解题要点:
①使用Arrays.sort()方法,将gifts数组按从小到大的顺序排序。
②因为所求红包金额res出现的次数需超过红包总数的一半,则排序后的中间值必定为所求值(所求值存在的情况下)。
③若循环结束后count <= n/2,则所求值不存在,返回0。
2.完整代码:
import java.util.*;
public class Gift {
public int getValue(int[] gifts, int n) {
int count = 0;
Arrays.sort(gifts); //排序
int res = gifts[n / 2];
for (int i = 0; i < n; i++) {
if (gifts[i] == res) {
count++;
}
//res出现的次数超过了红包总数的一半,则res即为所求结果
if (count > n / 2) {
return res;
}
}
return 0; //未找到符合要求的结果值
}
}

京公网安备 11010502036488号