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; //未找到符合要求的结果值 } }