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